2016-02-23 62 views
0

我想將我的12小時轉換爲24小時。但是當我的設備當前時間在12小時它給我的錯誤:Swift:12hr時間轉換爲24小時當設備在12小時的隊友

fatal error: unexpectedly found nil while unwrapping an Optional value

當我的設備當前時間是24小時中,然後它給了我正確的輸出。

我用下面的代碼:

func getTimeFromString(timeString : String)-> NSDate 
    { 
     let formatter = NSDateFormatter(); 
     formatter.dateFormat = "HH:mm" 
     let date = formatter.dateFromString(timeString)//here timeString is "06:45 am" 
     return date! 
    } 

我的問題是,爲什麼不能12小時時間轉換爲24小時,當器件電流的時間是12小時中甲時間?

請給我任何想法,代碼,參考。 在此先感謝!

+0

請提供您輸入字符串的示例。 –

+0

[Swift將NSDate轉換爲24小時格式在設備上失敗]的可能重複(http://stackoverflow.com/questions/33451082/swift-converting-nsdate-to-24h-format-fails-on-device) - 設置格式化程序區域設置爲en_US_POSIX。 –

回答

0

您提供的輸入字符串與您指定的日期格式不匹配。

給你的函數的一些變化

  1. 它應該返回一個可選NSDate(當無法識別的格式)
  2. 格式應該是hh:mma

喜歡這個

func dateFromString(timeString: String)-> NSDate? { 
    let formatter = NSDateFormatter() 
    formatter.dateFormat = "hh:mma" 
    return formatter.dateFromString(timeString) 
} 

現在你可以使用它

dateFromString("10:15am") // "Jan 1, 2000, 12:15 AM" 
dateFromString("10:15pm") // "Jan 1, 2000, 12:15 PM" 
dateFromString("NOT A DATE") // nil 
+0

'HH'是24小時制的格式,所以'HH:mma'對我來說沒什麼意義。 –

+0

謝謝@MartinR,我把'HH'改成了'hh'。 –

相關問題