如何将字符串转换为 NSDate?
How to convert String to NSDate?
每当有新的远程 notifications.I 正在为我的后端使用解析时,我都会收到字符串。我检索到的字符串来自 "createdAt" 列。
我试过下面的代码:
var ca = "2015-07-03T03:16:17.220Z"
var dateFormater : NSDateFormatter = NSDateFormatter()
dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'"
let date = dateFormater.dateFromString(ca)
println(date)
但是 println 给了我 nil,我认为我的日期格式有问题。我该如何解决这个问题?
你错过了毫秒数。因此:
dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
请注意,从日期字符串转换为 NSDate
时,不应引用 Z
。如果您引用 Z
,它将匹配文字 Z
字符,但不会正确反映此日期字符串实际上是 Zulu/GMT/UTC.
如果你想创建格式器也采用另一种方式,将 NSDate
对象转换为字符串,在这种情况下你应该引用 Z
,但在这种情况下你必须记住明确设置时区:
dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
dateFormater.timeZone = NSTimeZone(forSecondsFromGMT: 0)
顺便说一下,不要忘记按照 Apple Technical Q&A 1480 设置 locale
。
dateFormater.locale = NSLocale(localeIdentifier: "en_US_POSIX")
每当有新的远程 notifications.I 正在为我的后端使用解析时,我都会收到字符串。我检索到的字符串来自 "createdAt" 列。
我试过下面的代码:
var ca = "2015-07-03T03:16:17.220Z"
var dateFormater : NSDateFormatter = NSDateFormatter()
dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'"
let date = dateFormater.dateFromString(ca)
println(date)
但是 println 给了我 nil,我认为我的日期格式有问题。我该如何解决这个问题?
你错过了毫秒数。因此:
dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
请注意,从日期字符串转换为 NSDate
时,不应引用 Z
。如果您引用 Z
,它将匹配文字 Z
字符,但不会正确反映此日期字符串实际上是 Zulu/GMT/UTC.
如果你想创建格式器也采用另一种方式,将 NSDate
对象转换为字符串,在这种情况下你应该引用 Z
,但在这种情况下你必须记住明确设置时区:
dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
dateFormater.timeZone = NSTimeZone(forSecondsFromGMT: 0)
顺便说一下,不要忘记按照 Apple Technical Q&A 1480 设置 locale
。
dateFormater.locale = NSLocale(localeIdentifier: "en_US_POSIX")