所以當使用NSCalendar和NSDateComponents從NSDate對象中提取日期組件時,我遇到了一個奇怪的行爲。 如果日期從1970年起爲0秒,那麼本週的組件將返回53. 對於這種解決方法還是解決辦法而不是明顯的模數52方法?NSDateComponents在1970年1月1日返回第53周
這裏是你可以在你的機器上運行測試代碼:
-
(void)testDate {
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:0];
NSDateComponents *comp = [cal components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSWeekCalendarUnit) fromDate:date];
DLog(@"%d/%d/%d week: %d", [comp day],[comp month], [comp year], [comp week]);
}
這裏是輸出:
31/12/1969 week: 53
(gdb) po date
1970-01-01 00:00:00 +0000
(gdb)
我必須說我不確定爲什麼1969會有一個閏周。另一方面,它印刷31/12/1969的原因是因爲你處於時區。 – Joe
我沒有添加任何時區計算上面的代碼正是沒有運行調試器,奇怪的是,組件返回一天和一週點1969年的相對一週 –
那麼如何處理飛躍那麼每週/年? –