dateFormat总是返回nil

时间:2016-09-05 17:43:54

标签: ios swift2 nsdateformatter

我从服务器那里得到一个dateFormat:

2016-09-04T17:44:44+02:00

所以我写了一个dateformatter:

private static let jsonDateFormatter: NSDateFormatter = {
    let fmt = NSDateFormatter()
    fmt.dateFormat = "yyyy-MM-dd'T'HH:mm:ss+SSS"
    return fmt
}()

仍然存在问题,因为当我执行jsonDateFormatter.dateFromString时,它返回nil,因此dateFormat必须是错误的。

我没有看到问题。

2 个答案:

答案 0 :(得分:2)

根据Apple Docs上提供的文档here

此类日期的正确格式化程序将为

yyyy-MM-dd'T'HH:mm:ssZZZZZ

在给出示例中使用

let RFC3339DateFormatter = NSDateFormatter()
RFC3339DateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
RFC3339DateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
//RFC3339DateFormatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)

/* 39 minutes and 57 seconds after the 16th hour of December 19th, 1996 with an offset of -08:00 from UTC (Pacific Standard Time) */
let string = "1996-12-19T16:39:57-08:00"
let date = RFC3339DateFormatter.dateFromString(string)

答案 1 :(得分:0)

错误的格式字符串,另外您还应该阅读Apple的Q&A on parsing internet date

private static let jsonDateFormatter: NSDateFormatter = {
    let fmt = NSDateFormatter()
    fmt.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
    fmt.locale = NSLocale(localeIdentifier: "en_US_POSIX")
    return fmt
}()