从 iOS Swift 项目中的“2015-01-17T20:00Z”创建 NSDate
Create NSDate from "2015-01-17T20:00Z" in iOS Swift Project
我正在处理一些 JSON 数据 returns 这种格式的日期时间:"2015-01-17T20:00Z"
,当我试图将其转换为 NSDate
对象时,我总是留下零。我已经阅读了一些关于 SO 的教程和答案,Apple 的 NSDate / NSDateFormatter / Date Formatting 文档,并 ping 了一些 IRC 频道。
任何人都可以告诉我我做错了什么以及可能的解决方法吗?
我在 Swift 操场上的失败代码:
let dateString = "2015-01-17T20:00Z"
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-ddThh:mmZ"
let d = dateStringFormatter.dateFromString(dateString)
println(d)
输出:"Optional(2015-01-17 06:00:00 +0000)"
同一个 Swift 游乐场中的工作代码:
let dateString = "2015-01-17"
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-dd"
let d = dateStringFormatter.dateFromString(dateString)
println(d)
输出:"nil"
你必须像这样格式化它"yyyy-MM-dd\'T\'HH:mmZ"。您也可以尝试使用此扩展程序:
extension String {
func toDateFormattedWith(format:String)-> NSDate {
let formatter = NSDateFormatter()
formatter.dateFormat = format
return formatter.dateFromString(self)!
}
}
如 rmaddy 所述,您的日期是 UTC 格式,因此我们将仅转义 "T",如下所示:
"2015-01-17T20:00Z".toDateFormattedWith("yyyy-MM-dd\'T\'HH:mmZ") // "Jan 17, 2015, 6:00 PM"
如果您需要一些格式化日期的参考,您可以使用这个;
我正在处理一些 JSON 数据 returns 这种格式的日期时间:"2015-01-17T20:00Z"
,当我试图将其转换为 NSDate
对象时,我总是留下零。我已经阅读了一些关于 SO 的教程和答案,Apple 的 NSDate / NSDateFormatter / Date Formatting 文档,并 ping 了一些 IRC 频道。
任何人都可以告诉我我做错了什么以及可能的解决方法吗?
我在 Swift 操场上的失败代码:
let dateString = "2015-01-17T20:00Z"
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-ddThh:mmZ"
let d = dateStringFormatter.dateFromString(dateString)
println(d)
输出:"Optional(2015-01-17 06:00:00 +0000)"
同一个 Swift 游乐场中的工作代码:
let dateString = "2015-01-17"
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-dd"
let d = dateStringFormatter.dateFromString(dateString)
println(d)
输出:"nil"
你必须像这样格式化它"yyyy-MM-dd\'T\'HH:mmZ"。您也可以尝试使用此扩展程序:
extension String {
func toDateFormattedWith(format:String)-> NSDate {
let formatter = NSDateFormatter()
formatter.dateFormat = format
return formatter.dateFromString(self)!
}
}
如 rmaddy 所述,您的日期是 UTC 格式,因此我们将仅转义 "T",如下所示:
"2015-01-17T20:00Z".toDateFormattedWith("yyyy-MM-dd\'T\'HH:mmZ") // "Jan 17, 2015, 6:00 PM"
如果您需要一些格式化日期的参考,您可以使用这个;