我正在使用NSDate并将其转换为dateString
。但是......然后......
当我尝试使用相同的dateString
并将其转回NSDate
时,我的日期不正确。
NSDate到dateString
...
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MMM d, yyyy H:mm a"
let dateString = dateFormatter.stringFromDate(timeDate as! NSDate)
print("Date: \(dateString)")
控制台:
Date: Mar 22, 2016 22:30 PM
Date: Mar 23, 2016 1:00 AM
Date: Mar 23, 2016 9:00 AM
dateString
到plainDate
...
let reverseDateFormatter = NSDateFormatter()
reverseDateFormatter.dateFormat = "MMM d, yyyy H:mm a"
let plainDate = reverseDateFormatter.dateFromString(dateString)
print("Date Reverse: \(plainDate)")
控制台:
Date Reverse: Optional(2016-03-22 17:30:00 +0000)
Date Reverse: Optional(2016-03-23 05:00:00 +0000)
Date Reverse: Optional(2016-03-23 05:00:00 +0000)
答案 0 :(得分:2)
当您将日期转换为字符串时,您丢失了时区信息,然后无法将其重新组合在一起。
是否有某些原因您无法将Date本身存储为NSDate,然后使用它而不是从字符串重新构建日期?
如果您需要将其转换回字符串中的完整日期,则需要调整格式以存储时区
答案 1 :(得分:1)
stringFromDate返回非可选字符串,但dateFromString返回可选日期。在打印之前有条件地打开结果:
如果let result = reverseDateFormatter.dateFromString(dateString){ 打印(结果) }