2013-04-16 51 views
1

NSDateComponentsNSCalendar有一個功能,可以使用NSCalendarUnit獲得本月的第n個工作日,NSWeekdayOrdinalCalendarUnit使用NSDateComponents的月份的最後一個工作日

例如月的第二個星期一

這太棒了,但是,我需要檢查NSDate的某個實例是本月的最後一個或第二個工作日。我想不出一個簡單的方法來做到這一點。我希望有一個簡單的竅門,並不要求你循環整個月的所有星期一。

你們有什麼想法嗎?

回答

3

只需添加七天(使用NSCalendardateByAddingComponents:toDate:options:)並檢查產生的月份是否相同。

+1

太簡單了,喜歡它! 簡單的建議:蘋果文檔說dateByAddingComponents:「請注意,一些計算可能需要相對較長的時間。」我想這是計算比添加天數更復雜(例如年和月,各種長度),但你也可以使用「dateWithTimeInterval:(86400 * 7)sinceDate:dateToTest」。 我不知道哪一個更快。 –

+0

@Micazeve 24小時增加7次可能會在夏時制變化和其他微妙的日曆異常情況下產生問題。爲什麼正確的'NSCalendar'方法可能需要一些時間是因爲它解決了所有這些異常。 –

+0

哦,我沒有想到夏時制的變化...... 感謝您的解釋! –

相關問題