ios - NSDate 中超过一年的错误

标签 ios swift ios-simulator device

实时: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){$0 == ","}

    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 年的日期被读入带有佛历的设备,然后被要求以公历格式显示日期。我在你的问题中没有看到确切的模式,但年份偏移表明类似的事情发生在这条线上的某个地方。

最重要的是,如果您正在创建/解释日期字符串以传输到网络服务或存储在数据库中,谨慎的做法是为两者使用通用格式(通常为此目的使用 ISO 8601 或 RFC 3339 日期)读取和写入日期。在 TN 1480 , Apple 建议指定 en_US_POSIXlocale

关于ios - NSDate 中超过一年的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28555008/

相关文章:

ios - 为什么我的 Swift 应用存档如此之大?

ios - 如何去除 iPad 模拟器中的灰色底栏

xcode - Xcode 9 中 iPhone 模拟器的 tail system.log

objective-c - 关闭弹出窗口 - Objective-c

javascript - 如何在 Apple Watch 中显示 D3.js 图表?

iphone - 'UITableView' 的 no @interface 声明选择器 'initWithStyle :reuseIdentifiers

ios - 检测到约束模糊地表明高度为零的情况

ios - Xcode 6.0.1 - iOS 模拟器黑屏

ios - 导航栏中的 UISearchController

ios - 图像点击识别点击的位置 iOS