2016-12-16 28 views
1

我有以下字符串作爲12小時制時間:不正確的時間爲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") 

有了這個擴展:

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

當我打印的OpenTime和closeTime,我及時得到不正確的值:

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

爲什麼這樣呢?我認爲這是與時區有關的smoething,所以我訪問NSDateFormatter return wrong date + Swift,但沒有爲我工作。如果有人有解決方案,請幫助我。謝謝 !

+3

找出之間的 「HH」 和差異 「HH」。 –

+0

哎呀..應該有'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

我與SWIFT 3和Xcode中8小檢查改變其工作請

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如果工作,那麼請接受我的答案謝謝你! –

相關問題