gpt4 book ai didi

ios - Swift 日期相当于 30 纳秒以下

转载 作者:搜寻专家 更新时间:2023-10-31 08:16:11 25 4
gpt4 key购买 nike

我注意到在比较 Swift 的两个实例时 Date== ,当 DateComponents.nanoseconds 中的差异时,它们符契约(Contract)一日期小于30。例如:

let calendar = Calendar(identifier: .gregorian)
let startComps = DateComponents(year: 2017, month: 1, day: 1, hour: 0, minute: 0, second: 0, nanosecond: 0)
let endComps = DateComponents(year: 2017, month: 1, day: 1, hour: 0, minute: 0, second: 0, nanosecond: 29)

let startDate = calendar.date(from: startComps)!
let endDate = calendar.date(from: endComps)!
print(startDate == endDate)
//prints true, changing 29 to 30 prints false

如果与 startDate.compare(endDate) == .orderedSame 进行比较,行为是相同的.我在文档或标题中找不到任何提及。将 30 纳秒作为平等的截止点是否有合乎逻辑的理由?

最佳答案

日期在内部表示为 DoubleDouble 的精度有限。您在那里的第一个约会的内部值为 504950400.000000000000000(以小数点后 15 位打印)。下一个更高的可表示值是 504950400.000000059604645。如果将纳秒设置为 30,您的结束日期恰好是 504950400.000000059604645(实际上对应于纳秒值 59 ).

也就是说,2017年1月,Date只能区分59纳秒的时间间隔。同时回到 2001 年 1 月,Date 可以区分每一纳秒。到 2027 年,它将区分 119 纳秒的间隔。

关于ios - Swift 日期相当于 30 纳秒以下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46161848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com