簡體   English   中英

dateComponents(_,from,to)返回錯誤的月數

[英]dateComponents(_, from, to) returning wrong number of months

我有創建日期的功能...

func date(withYear year: Int, month: Int, day: Int) -> Date {
    let components = DateComponents(calendar: Calendar.current, timeZone: nil, era: nil, year: year, month: month, day: day, hour: 0, minute: 0, second: 0, nanosecond: 0, weekday: nil, weekdayOrdinal: nil, quarter: nil, weekOfMonth: nil, weekOfYear: nil, yearForWeekOfYear: nil)
    return components.date!
}

只需要日,月和年為方便。

所以我創建了兩個日期。

let startDate = date(withYear: 2016, month: 9, day: 30) // prints to console as 2016-09-29 23:00:00 +0000
let endDate = date(withYear: 2016, month: 11, day: 1)   // prints to console as 2016-11-01 00:00:00 +0000

然后計算它們之間的月數...

let components = Calendar.current.dateComponents([.month], from: startDate, to: endDate)

print(components.month) // returns 1

這不是2嗎? 如何計算月份成分? 是幾天除以30還是什么? 如果是這樣,我將需要一種新的方法來計算月數。

我有同樣的問題,但是NSCalendar可以正常工作,此代碼示例證明了這一點。

    let date = NSDate()
    let calendar = NSCalendar.currentCalendar()
    let components = calendar.components([.Day , .Month , .Year], fromDate: date)

    let twoMonthdate = calendar.dateByAddingUnit(.Month, value: 2, toDate:date, options: [])

    let difference = calendar.components([.Month], fromDate: date, toDate: twoMonthdate!, options: [])
    //differences is 2 monthses

如果您的情況是1個月零幾天。 這就是為什么您會收到這樣的結果。

暫無
暫無

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

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