我正在使用以下代码将日期字符串格式化为日期对象。但是对于某些日期字符串,它可以工作,对于某些日期,它返回nil。
Format =“ 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")
答案 0 :(得分:2)
您的格式错误。它应该是:
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
在这里查看日期时间格式:
https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns
答案 1 :(得分:1)
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)无
看看分钟和秒钟:)