Swift 'yyyy-MM-dd'T'HH:mm:ss.sssZ' 字符串至今



我使用以下代码将日期字符串格式化为日期对象。但是对于某些日期字符串,它可以工作,而对于某些日期字符串,它返回 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.sssZ2019-04-02T09:47:24.055Z输出为 :

可选(2019-04-02 09:47:55 +0000( 无

看看分钟和秒:(

最新更新