簡體   English   中英

Swift中日期之間的天數

[英]Number of days between dates in Swift

我在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)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM