2011-12-08 26 views
0

我的地區格式爲美國,而且我得到的Mac OSx版本在美國也有不同的星期數。 我正在使用iOS 5,並且在此sdk版本之前沒有在iOS上編程。所以我只是想確保我沒有做錯什麼。在下面的白色代碼中,我得到了今年最後一週的數字53,我認爲這是錯誤的。本週的第一天是星期日。 請指教,謝謝。IOS5上的錯誤組件日期錯誤

NSCalendar* calendar = [NSCalendar currentCalendar]; 
    NSDate *date = [NSDate date]; 


    NSDateComponents *dateComponents = [calendar components:(NSWeekCalendarUnit) fromDate:date ]; 
    int week = (int)[dateComponents week]; 


    NSLog(@"%i", week); 

其爲[NSDate的日期] 12月8日,它返回週數50,但在Mac OSX上,我得到每週49

+0

什麼是「自我」?一個'NSDate'對象?我認爲你需要展示更多的代碼。我要找的是如何設置你傳遞給你的'dateComponents'對象的'NSDate'。 –

+0

謝謝你,它在NSDate上的一個類別,所以我自己是日期,我編輯,更容易地暴露代碼 –

回答

1

首先,我看你改變了你的代碼,以擺脫「的GregorianCalendar」的廢話。好。

當我試圖在測試應用代碼:

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *dateComponents = [calendar components:(NSWeekCalendarUnit) fromDate:[NSDate date]]; 
int week = (int)[dateComponents week]; 
[calendar release]; 
NSLog(@"week is %d", week); 
return week; 

我得到49(這對我來說很有意義)。

如果你得到53,那麼你傳遞了錯誤的日期。

+0

我得到50與該代碼,你使用什麼SDK版本? –

+0

我在XCode 4.2.X和iOS 5下得到了50的代碼...我在XCode 3.2.6和iOS 4.3 SDK下得到了49的代碼。有趣的行爲差異,是嗎? –

+0

更像是一個錯誤,我認爲,我提交它以防萬一:bug#10549802.我想不出上週是53的情況。在歐洲,他們使用ourWeek-1而不是+1 –

0

您是否檢查語言環境?例如,美國和歐洲的週數有所不同。