DateFormatter returns 在特定设备上为 nil
DateFormatter returns nil on specific devices
我使用以下代码将字符串转换为日期:
// 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)!
}
这在模拟器和我的设备上运行良好,但它在 return 几个客户端设备上崩溃。
我试图通过将其设为 return 日期字符串来查看问题所在,在客户端设备上它 return 是这样的:
"06-10-18, 13:30"
为什么 return 在少数设备上的显示方式不同?
返回的日期是正确的,您可以使用.timeIntervalSince1970
属性进行检查。发生的事情是,当您打印日期(实际上只是一个 TimeInterval,又名 Double,一个 特定时间点,独立于任何日历或时区 )时,它正在打印它的 description 属性,使用当前设备设置。
要使用您当前的语言环境打印日期,请使用 this 实例方法:
let date = convertStringToDate(string: "06-10-18, 01:30 pm")
print(date.description(with: Locale(identifier: "en_US_POSIX")))
我使用以下代码将字符串转换为日期:
// 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)!
}
这在模拟器和我的设备上运行良好,但它在 return 几个客户端设备上崩溃。
我试图通过将其设为 return 日期字符串来查看问题所在,在客户端设备上它 return 是这样的:
"06-10-18, 13:30"
为什么 return 在少数设备上的显示方式不同?
返回的日期是正确的,您可以使用.timeIntervalSince1970
属性进行检查。发生的事情是,当您打印日期(实际上只是一个 TimeInterval,又名 Double,一个 特定时间点,独立于任何日历或时区 )时,它正在打印它的 description 属性,使用当前设备设置。
要使用您当前的语言环境打印日期,请使用 this 实例方法:
let date = convertStringToDate(string: "06-10-18, 01:30 pm")
print(date.description(with: Locale(identifier: "en_US_POSIX")))