Swift - 将JSON日期转换为Swift兼容日期

时间:2015-05-15 21:59:01

标签: javascript json swift date nsdate

我正在尝试使用Date()函数转换javascript代码生成当前日期的日期。但是当我把它打印出来时,我就是零。

我的代码:

        let date2 = data?[0] as! String
        println(date2)

        var str = "2013-07-21T19:32:00Z"

        var dateFor: NSDateFormatter = NSDateFormatter()
        dateFor.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"

        var Date: NSDate? = dateFor.dateFromString(date2)

        println(Date) 

date2 =>打印2015-05-15T21:58:00.066Z 日期=>打印没有 str仅用于测试和完美运行。

有人看到代码中有任何缺陷吗?

3 个答案:

答案 0 :(得分:15)

str和date2两个日期格式不同。 str格式为“yyyy-MM-dd'T'HH:mm:ssZ”,而date2格式为“yyyy-MM-dd'T'HH:mm:ss.SSSZ”。

let date2 = "2015-05-15T21:58:00.066Z"

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

if let date = dateFormatter.dateFromString(date2) {
    println(date)  // "2015-05-15 21:58:00 +0000"

}

答案 1 :(得分:1)

documentation 使用 ISO8601DateFormatter

<块引用>

在 macOS 10.12 及更高版本或 iOS 10 及更高版本中,使用 使用 ISO 8601 日期时的 ISO8601DateFormatter 类 表示。

import Foundation

let isoStr = "2020-02-18T11:40:01.000Z"

let isoDateFormatter = ISO8601DateFormatter()
isoDateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
isoDateFormatter.formatOptions = [
    .withFullDate,
    .withFullTime,
    .withDashSeparatorInDate,
    .withFractionalSeconds]

if let isoDateFormatted = isoDateFormatter.date(from: isoStr) {
    print(isoDateFormatted)
}

答案 2 :(得分:0)

快速4 +

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let str = "2013-07-21T19:32:00Z"

if let date = dateFormatter.date(from: str) {
    print(date)
}

输出: 2013-07-21 19:32:00 +0000