我使用以下代码将日期字符串格式化为日期对象。但是对于某些日期字符串,它可以工作,而对于某些日期字符串,它返回 nil。
格式 = "yyyy-MM-dd'T'HH:mm:ss.sssZ">
"2019-04-02T09:47:24.055Z"作品
"2019-03-27T22:31:17.140Z"不起作用
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.sssZ"
let date = dateFormatter.date(from: "2019-03-27T22:31:17.140Z")
你的格式是错误的。它应该是:
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
在此处查看日期时间格式:https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date = dateFormatter.date(from: "2019-04-02T09:47:24.055Z")
let date1 = dateFormatter.date(from: "2019-03-27T22:31:17.140Z")
print(">>>>>!!", date, date1)
可选(2019-04-02 09:47:24 +0000( 可选(2019-03-27 22:31:17 +0000(
上面的代码按预期工作。
使用SSS
而不是sss
对于您的案例 yyyy-MM-dd'T'HH:mm:ss.sssZ
和2019-04-02T09:47:24.055Z
输出为 :
可选(2019-04-02 09:47:55 +0000( 无
看看分钟和秒:(