我在核心数据中存储了一个日期(作为日期),并且使用
println
它正确显示了它的值:4 月 21 日(是下面的 var dateX
),但是在 println
之后,我将其格式化为带有以下代码的字符串,链接到它的标签显示4月22日(这是今天,所以我想知道明天会显示23等),问题出在哪里?
if dateX != nil{
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MMM dd, yyyy"
dateFormatter.timeZone = NSTimeZone.defaultTimeZone()
var dateXstring = dateFormatter.stringFromDate(dateX as NSDate)
startLabel.text = "Profile created on \(dateXstring)"
}
println dateX 和 dateXstring:
我的时区是罗马(意大利)
您可能遇到时区问题。你现在在哪里?
DefaultTimeZone
可能是 GMT/ZULU 时间,距东海岸 -5 小时。
检查的一个好方法是使用
timeIntervalSince1970
函数(我认为这就是它的名字)。如果存储的日期和检索的日期具有相同的值,则表示日期相同,并且出现显示问题。
timeIntervalSince1970
返回一个 NSTimeInterval
,这实际上是一个 Double