NSDate 中超过一年的错误

Error over year in NSDate

实时: 2015-02-17 04:48:06 +0000
错误时间:1472-02-17 04:48:06 +0000

初始日期格式化程序

 dateFormatter =  NSDateFormatter()
 dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZZ"
 dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC+07:00")

代码查询

var dataTimeAddedWithSplit = split(dataTimeAdded){[=11=] == ","}

    for var i = 0 ; i < dataTimeAddedWithSplit.count ; i++ {
    var predicateTypeActivities : NSPredicate = NSPredicate(format: "timeAdded == %@", dateFormatter.dateFromString(dataTimeAddedWithSplit[i])! )!
    fetchRequest.predicate = predicateTypeActivities
        println(dateFormatter.dateFromString(dataTimeAddedWithSplit[i])!)

请帮帮我T^T
这个问题发生在真实设备上,但是我在 IOS 模拟器上使用没有发现问题。

我敢打赌问题出在区域设置上。佛历2015-02-17为2558-02-17(年相差543年)。您的 1472 日期也巧合地偏移了 543 年(但相反)。这几乎就像一个 2015 年的日期被读入带有佛历的设备,然后被要求以公历格式显示日期。我在你的问题中没有看到确切的模式,但年份偏移表明类似的事情发生在这条线上的某个地方。

最重要的是,如果您是 creating/interpreting 用于传输到 Web 服务或存储在数据库中的日期字符串,谨慎使用通用格式(通常使用 ISO 8601 或 RFC 3339 日期)目的)用于读取和写入日期。在 TN 1480 中,Apple 建议指定 locale of en_US_POSIX