迄今为止的Swift`yyyy-MM-dd'T'HH:mm:ss.sssZ`字符串

时间:2019-04-03 09:43:32

标签: ios swift

我正在使用以下代码将日期字符串格式化为日期对象。但是对于某些日期字符串,它可以工作,对于某些日期,它返回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")

2 个答案:

答案 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.sssZ2019-04-02T09:47:24.055Z 输出为:

  

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

看看分钟和秒钟:)