DateFormatter在特定设备上返回nil

时间:2018-10-06 06:40:09

标签: swift date dateformatter

我使用以下代码将字符串转换为日期:

// Input is "06-10-18, 01:30 pm"

func convertStringToDate(string: String) -> Date {
    let formatter = DateFormatter()
    formatter.dateFormat = "dd-MM-yyyy, hh:mm a"
    return formatter.date(from: string)!
}

这在模拟器和我的设备上正常工作,但是在返回几个客户端设备时崩溃。

我尝试通过使日期返回一个字符串来查看问题所在,并在客户端设备上返回以下内容:

"06-10-18, 13:30"

为什么在少数设备上返回的价格不同?

1 个答案:

答案 0 :(得分:0)

返回的日期正确,您可以使用.timeIntervalSince1970属性进行检查。发生的情况是,当您打印日期(实际上只是一个TimeInterval,又称Double,一个特定的时间点,与任何日历或时区无关)时,它会打印其description属性,以及当前的设备设置。

要使用您当前的语言环境打印日期,请使用this实例方法:

let date = convertStringToDate(string: "06-10-18, 01:30 pm")
print(date.description(with: Locale(identifier: "en_US_POSIX")))