dateFormat 总是 returns 无

dateFormat always returns nil

我正在从服务器获取日期格式,如下所示:

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

所以我写了一个日期格式化程序:

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

还有一个问题,因为当我这样做时 jsonDateFormatter.dateFromString 它 returns nil 所以 dateFormat 一定是错误的。

我没有看到问题。

错误的格式字符串,另外你还应该阅读 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
}()

根据 Apple 文档中给出的文档 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)