2016-02-23 61 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'。 –

相关问题