2016-01-17 115 views
0

是否有任何方法可用於NSDate/NSCalendar來計算當月和當年的天數?如何計算當前月份/年份的天數

我看到的唯一的東西就是獲取給定日期或兩個日期之間的天數。
這是唯一的方法嗎?

+0

但是我需要當前的月份/年份,而不是給定的月份,實際上我不知道一年中的天數是如何計算的。 – Kobe

+0

我的確希望人們能夠證明我的失敗是正確的,所以我可以從我的錯誤中學習,但從我的角度來看,這是一個很好的問題,我無法在stackoverflow上找到答案。 – Kobe

+0

因爲我認爲鏈接回答在兩個月前和幾年前都有效,所以我關閉了一個副本。然後我意識到情況並非如此,因此我重新提出了這個問題。對困惑感到抱歉。 –

回答

7

這裏是一個同時適用於幾個月甚至幾年的方法:

let calendar = NSCalendar.currentCalendar() 
let date = NSDate() 

// Calculate start and end of the current year (or month with `.Month`): 
var startOfInterval : NSDate? 
var lengthOfInterval = NSTimeInterval() 
calendar.rangeOfUnit(.Year, startDate: &startOfInterval, interval: &lengthOfInterval, forDate: date) 
let endOfInterval = startOfInterval!.dateByAddingTimeInterval(lengthOfInterval) 

// Compute difference in days: 
let days = calendar.components(.Day, fromDate: startOfInterval!, toDate: endOfInterval, options: []) 
print(days) 

(您可能需要添加一些錯誤檢查,而不是強行展開 自選)


更新Swift 3:

let calendar = Calendar.current 
let date = Date() 

// Calculate start and end of the current year (or month with `.month`): 
let interval = calendar.dateInterval(of: .year, for: date)! 

// Compute difference in days: 
let days = calendar.dateComponents([.day], from: interval.start, to: interval.end).day! 
print(days) 
+1

是的,這適用於月份和年份(只需通過更改rangeOfUnit中的.Year字段)。謝謝。 – Kobe

3
let date = NSDate() 
let cal = NSCalendar(calendarIdentifier:NSCalendarIdentifierGregorian)! 
let days = cal.rangeOfUnit(.Day, inUnit: .Month, forDate: date) 

print("\(days) in the month of \(date)") 
+1

謝謝邁克爾。這很好。我如何計算一年中的天數?我嘗試了相同的代碼,但使用.Year代替.Unonit字段中的.Month,但似乎不起作用。 – Kobe

相關問題