ios - 日期比较失败
问题描述
在决定是否进入 while 循环时,我试图比较两个日期对象。
我已经设置了一个断点并将两个值都打印到控制台,它们是相同的——但是绕过了 while 循环。
while currentTime + intervalTime <= endTime { }
currentTime
是一个 Date 对象,就像endTime
. intervalTime
是一个时间间隔。当我使用断点并打印到控制台时,我得到了以下结果。看起来它们应该相等,但正如我所说,while 循环被绕过了。
(lldb) print currentTime + intervalTime
(Date) $R8 = 2019-02-04 13:19:05 UTC
(lldb) print endTime
(Date) $R10 = 2019-02-04 13:19:05 UTC
解决方案
ADate
代表一个绝对时间点,包括小数秒(达到一定精度,受TimeInterval
aka的精度限制Double
,可能还有其他因素)。
您可以将时间间隔截断为整数秒,或使用正确的Calendar
方法:
let date = Date()
let date1 = Calendar.current.dateInterval(of: .second, for: date)!.start
print(date.timeIntervalSinceReferenceDate) // 571003391.256104
print(date1.timeIntervalSinceReferenceDate) // 571003391.0
您还可以将两个日期与整秒的“粒度”进行比较:
if Calendar.current.compare(currentDate, to: endDate, toGranularity: .second) != .orderedAscending { }
推荐阅读
- c# - 如何使用 Visual Studio 单元测试框架或 NUnit 框架在 C# 中模拟对象?
- d3.js - 在矩形上添加一个圆
- google-cloud-firestore - Firestore 数据库设计:团队 vs 游戏 vs 玩家
- javascript - 有没有办法编写一个命令来在 Google 表格中查找和显示一行的内容?
- python-3.x - Jupiter 脚本文件路径
- c++ - 值调用和指针引用调用
- javascript - javascript 没有在 html 代码中启用,pycharm IDE
- python - 如何使用opencv-python进行实时计数对象和检测?
- javascript - 朗读时浏览器如何突出显示单词/句子?
- python - 使用 python 修复 JSON 结构