這有點奇怪,但是可以使用NSCalendar(或任何組件)來計算下一個「第一個日期這個月的星期二「會是?使用NSCalendar - 獲取下一個月的第一個星期二
例如,今天是2010年3月25日星期四。下一個「本月的第一個星期二」將在4月6日。同樣,如果我在4月1日查找下一個「本月的第一個星期二」它仍然會在4月6日。
你會如何做到這一點?
非常感謝!!!!!
這有點奇怪,但是可以使用NSCalendar(或任何組件)來計算下一個「第一個日期這個月的星期二「會是?使用NSCalendar - 獲取下一個月的第一個星期二
例如,今天是2010年3月25日星期四。下一個「本月的第一個星期二」將在4月6日。同樣,如果我在4月1日查找下一個「本月的第一個星期二」它仍然會在4月6日。
你會如何做到這一點?
非常感謝!!!!!
下面的代碼計算的第一個星期二給定月/年組合。這是寫在MacRuby因爲這是我只是嘗試過,但你應該沒有問題,將其轉換爲正確的Objective-C,它只是一個不同的語法(我愛的MacRuby快速嘗試的想法):
dc = NSDateComponents.alloc.init
# Set month to April 2010
dc.setYear 2010
dc.setMonth 4
dc.setWeekday 3 # 1 = Sunday, 2 = Monday, ...
dc.setWeekdayOrdinal 1 # We want the first weekday of the month
cal = NSCalendar.alloc.initWithCalendarIdentifier NSGregorianCalendar
date = cal.dateFromComponents dc
date.description # => "2010-04-06 00:00:00 +0200"
我給你確定一個給定日期的「下一個第一個星期二」:先計算當前日期的月份,如果結果是過去,則在下個月再次執行。使用-[NSCalendar components:fromDate:]
獲取給定NSDate的月/日組合。
不幸的是我無法驗證此代碼的喪失工作能力,但有些應該是這樣的:
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setWeekday:2]; // Monday
[components setMonth:5]; // May
[components setYear:2008];
[components setWeekdayOrdinal:1]
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:components];
對於樣品和詳細信息請參閱本guide
謝謝,但這只是硬編碼的日期。我需要能夠動態地找出我要找的日期是... – 2010-03-25 14:50:48
當然可以。這只是示例:-) – Victor 2010-03-25 14:52:30
這不起作用。你需要包含'[setWeekdayOrdinal:1];'。 – 2010-03-25 14:57:15
簡直太棒了! – 2010-03-25 15:06:34