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)
我正在从服务器获取日期格式,如下所示:
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)