使用 +1000 值转换日期

Convert Date with +1000 values

我有一个这样的日期:2018-04-30T23:22:05+1000,我想转换成 Date 对象

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss:Z" // z, zz also still nil
let ss = formatter.date(from: "2018-04-30T23:22:05+1000")
print("VAL : \(ss)") // nil always

+1000 值的正确格式是什么?

还有我必须添加什么语言环境才能获得准确的日期?

将您的日期格式用作 zone - 特定于长的非位置格式。如果不可用,则回退到长本地化 GMT 格式(“0000”)。

                             //2018-04-30T23:22:05+1000
       formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 

而不是

       formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss:Z" // z, zz also still nil

完整答案

    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
    let ss = formatter.date(from: "2018-04-30T23:22:05+1000")
    print("VAL : \(ss)") // nil always

日期是 ISO 8601 日期(Internet 格式),+1000 表示 +10 小时 0 分钟 (+hhmm)。像这样解析

let str = "2018-04-30T23:22:05+1000"
let formatter = ISO8601DateFormatter()

formatter.formatOptions = .withInternetDateTime

let date = formatter.date(from: str)