2016-12-16 10 views
1

不正な時間 - 私は12時間形式の時間などの文字列以下のいるスウィフト

let timeFrom = "05:30 AM"; 
let timeTo = "04:35 PM"; 

し、次のように比較のためにこれらの日付を取得しようとしている:

let openTime = timeFrom.date(format: "hh:mm a") 
let closeTime = timeTo.date(format: "hh:mm a") 
この拡張子を持つ

:私はOPENTIMEとcloseTimeを印刷するとき

extension String 
{ 
    func date(format:String) -> Date? 
    { 
     let formatter = DateFormatter() 
     formatter.dateFormat = format 
     formatter.timeZone = NSTimeZone.local 
     return formatter .date(from: self) 
    } 
} 

、私は時間内に不正な値を取得しています:

print(openTime)  // 2000-01-01 00:00:00 +0000 
print(closeTime)  // 2000-01-01 11:00:00 +0000 

なぜそうですか?私はそれが時間帯に関連するスムージングだと思うので、私はNSDateFormatter return wrong date + Swiftを訪問するが、何も私のために働かなかった。誰かが解決策を持っているなら、私を助けてください。ありがとうございました !私は小さなスイフト3とXcode 8に確認してください

+3

「HH」の間との違いを見つけるしてください変わる「HH」を –

+0

oops .. 'hh'があるはずです。 @el Tomatoを指摘してくれてありがとう。確認中... – iAkki

+0

[ISO 8601タイムスタンプから12時間形式だけを表示](http://stackoverflow.com/questions/15121065/display-just-the-12-hour-time-format-from)の可能な複製-an-iso-8601-timestamp)など多くのものがあります。 – rmaddy

答えて

3

は、その作業が

let timeFrom = "05:30 AM"; 
let timeTo = "04:35 PM"; 
let openTime = timeFrom.date(format: "hh:mm a") 
let closeTime = timeTo.date(format: "hh:mm a") 

print(openTime) 
print(closeTime) 

をチェックして、拡張子の変更

extension String{ 
func date(format:String) -> Date? 
{ 
    let formatter = DateFormatter() 
    formatter.timeZone = NSTimeZone(abbreviation: "GMT+0:00") as TimeZone! 
    formatter.dateFormat = format 
    //formatter.timeZone = NSTimeZone.local 
    return formatter .date(from: self) 
}} 
+1

さて、 "GMT + 0:00"を "GMT"に変更しようとしましたが、それはうまくいきました。ありがとうございました ! – iAkki

+0

@AkshayGajarlawar私の答えを受け入れる場合は、ありがとうございます! –

関連する問題