2012-02-29 16 views
0

我寫這些代碼來獲得本週的週日。我想獲得本週日的一個問題

NSCalendar *cal = [NSCalendar currentCalendar]; 
NSDateComponents* components = [cal components: NSYearForWeekOfYearCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit fromDate:[NSDate date]]; 

// I want to get the sunday 
[components setWeekday:1]; 
NSDate* d = [cal dateFromComponents:components]; 
NSLog(@"Sunday:%@", d); 

但我得到的結果是:2012年2月25日,我認爲正確的結果應該是2月26日,2012年 這有什麼錯呢?

+0

哎呀別提我看着三月。 :) – 2012-02-29 02:58:07

+0

也許'NSMonthCalendarUnit'扔掉它? – 2012-02-29 04:32:55

回答

0

需要初始化多個組件:

for (int i = 0; i < 12; i++) 
{ 
    [components setWeek:i]; 
    [components setWeekday:1]; 
    d = [cal dateFromComponents:components]; 
    NSLog(@"Sunday,Week %d:%@", i,d); 
} 

Output: 

Sunday,Week 0:2011-12-25 08:00:00 +0000 
Sunday,Week 1:2012-01-01 08:00:00 +0000 
Sunday,Week 2:2012-01-08 08:00:00 +0000 
Sunday,Week 3:2012-01-15 08:00:00 +0000 
Sunday,Week 4:2012-01-22 08:00:00 +0000 
Sunday,Week 5:2012-01-29 08:00:00 +0000 
Sunday,Week 6:2012-02-05 08:00:00 +0000 
Sunday,Week 7:2012-02-12 08:00:00 +0000 
Sunday,Week 8:2012-02-19 08:00:00 +0000 
Sunday,Week 9:2012-02-26 08:00:00 +0000 
Sunday,Week 10:2012-03-04 08:00:00 +0000 
Sunday,Week 11:2012-03-11 08:00:00 +0000 
+0

奇怪了,用你的代碼,我的輸出是: 週日,0周:2011-12-24 16:00:00 +0000 週日,第1周:2011-12-31 16:00:00 +0000 週日,第2周:2012-01-07 16:00:00 +0000 週日,第3周:2012-01-14 16:00:00 +0000 週日,第4周:2012-01-21 16:00:00 +0000 週五第5周2012-01-28 16:00:00 +0000 週日第6周2012-02-04 16:00:00 +0000 週日第7周2012-02-11 16 :00:00 +0000 星期日,第8周:2012-02-18 16:00:00 +0000 星期日,第9周:2012-02-25 16:00:00 +0000 星期日,第10周:2012- 03-03 16:00:00 +0000 週日,第11周:2012-03-10 16:00:00 +0000 – Timesong 2012-02-29 06:00:11

+0

很奇怪。你在國際日期線的另一邊嗎? :) – 2012-02-29 14:03:19

+0

我的時區是+8。 – Timesong 2012-03-01 09:17:01

相關問題