ios - 在 .Day 中快速比较两个 NSDate 给出了错误的结果

标签 ios swift nsdate

我试图比较两个 NSDate by .Day 这样做(都在 gmt 时区):

 var order = NSCalendar.currentCalendar().compareDate(event.startDate!, toDate: cell.date!,
                    toUnitGranularity: .Day)
                    if (order == .OrderedSame) {
                            print(String(event.startDate!) + " == " + String(cell.date!))
                        cell.events.append(event)
                        break
                    }

用2016-03-08 21:43:53 +0000和2016-03-09 00:00:00 +0000时说它们的顺序一样,其实不是,天数不一样。这个函数输出:

 2016-03-08 21:43:53 +0000 == 2016-03-09 00:00:00 +0000

有人可以帮帮我吗?

最佳答案

这两个记录日期以 UTC 时区记录。但是,如果您当前的时区位于该时区以西,那么这两个日期都是您所在时区的 2016 年 3 月 8 日,并且比较是在您的时区内完成的。或者,如果您住在该日期以东至少 2.5 小时,那么这两个日期都是 2016 年 3 月 9 日。

例子。如果您住在美国东部(目前是 GMT-4,但 3 月 8 日是 GMT-5),那么这两个日期实际上是 2016-03-08 16:43:53 -0500 2016-03-08 19:00:00 -0500.

例子。如果您住在东欧或亚洲(比如 GMT+5),那么这两个日期将是 2016-03-09 02:43:53 +05002016-03-09 05 :00:00 +0500

如您所见,这些都是在同一天进行的,因此比较是正确的。

关于ios - 在 .Day 中快速比较两个 NSDate 给出了错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36204879/

相关文章:

iphone - 如何获取 iPhone 的系统日期

ios - 为 UITabBarItem 设置操作

ios:将新数据加载到 UICollectionView 中

ios - 如何在 UITableView 的页脚标题中使用换行符?

ios - ARC 中过度保留的调试策略?

ios - CoreBluetooth 在应用程序终止时建立外设连接

ios - 将 NSDates 天设置为相同的值

ios - 如何通过 PFQuery 从 Parse 中删除对象

macos - 如何在 Swift 中单击按钮时填充 NSTableView

ios - 使用 NSDate 将字符串转换为日期,我的日期更改为 6 个月前