Date 中的字符串有效,String 中的日期无效
String from Date works, Date from String doesn't work
我正在将 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)
当您将日期转换为字符串时,您会丢失时区信息,然后无法将其拼凑起来。
有什么原因不能将日期本身存储为 NSDate 然后使用它而不是从字符串重新构建日期吗?
如果您需要将其从字符串转换回完整日期,您还需要调整格式以存储时区
stringFromDate returns 一个非可选字符串,但 dateFromString returns 一个可选日期。在打印结果之前有条件地展开结果:
if let result = reverseDateFormatter.dateFromString(dateString) {
print(result)
}
我正在将 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)
当您将日期转换为字符串时,您会丢失时区信息,然后无法将其拼凑起来。
有什么原因不能将日期本身存储为 NSDate 然后使用它而不是从字符串重新构建日期吗?
如果您需要将其从字符串转换回完整日期,您还需要调整格式以存储时区
stringFromDate returns 一个非可选字符串,但 dateFromString returns 一个可选日期。在打印结果之前有条件地展开结果:
if let result = reverseDateFormatter.dateFromString(dateString) { print(result) }