Swift:当设备处于12小时格式时,将12小时转换为24小时

时间:2016-02-23 08:38:44

标签: swift datetime time nsdateformatter

我希望将12小时的时间转换为24小时。但是当我的设备当前时间是12小时时,它会给我一个错误:

  

致命错误:在解包可选值时意外发现nil

当我的设备当前时间为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小时合成时,它无法将12小时转换为24小时?

请建议我任何想法,代码,参考。 在此先感谢!!

1 个答案:

答案 0 :(得分:0)

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

对您的功能进行一些更改

  1. 它应该返回一个可选的NSDate(当格式无法识别时)
  2. 格式应为hh:mma
  3. 喜欢这个

    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