gpt4 book ai didi

swift - Swift 中日期之间的天数

转载 作者:行者123 更新时间:2023-11-30 11:35:19 25 4
gpt4 key购买 nike

我在 Swift 的 Calendar dateComponents(_:from:to:) 函数中发现了一个非常奇怪的行为。

let a = Calendar.current.date(byAdding: DateComponents(day: 7), to: Date())!
let n1 = Calendar.current.dateComponents([.day], from: Date(), to: a).day!
let n2 = Calendar.current.dateComponents([.day], from: Date(), to: Calendar.current.date(byAdding: DateComponents(day: 7), to: Date())!).day!
print(a)
print(Calendar.current.date(byAdding: DateComponents(day: 7), to: Date())!)
print(n1)
print(n2)

打印:

2018-04-21 19:58:16 +0000
2018-04-21 19:58:16 +0000
6
7

我错过了什么?

最佳答案

正如 Martin 在评论中所说,问题在于您在每一步都会获得 Date() 的新值,而最后一个值比第一个值晚了几分之一秒。

请注意,此代码给出了预期的输出:

let now = Date()
let a = Calendar.current.date(byAdding: DateComponents(day: 7), to: now)!
let n1 = Calendar.current.dateComponents([.day], from: now, to: a).day!
let n2 = Calendar.current.dateComponents([.day], from: now, to: Calendar.current.date(byAdding: DateComponents(day: 7), to: now)!).day!
print(a)
print(Calendar.current.date(byAdding: DateComponents(day: 7), to: now)!)
print(n1)
print(n2)

它之所以有效,是因为所有日期都是完全相同的值,而不是相差几分之一秒的值。

关于swift - Swift 中日期之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49835691/

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