我們知道NSDate是UTC/GMT。換句話說,沒有時區信息與它相關聯。NSCalendar組件不考慮時間
有高層次的類,如NSCalendar和NSTimeZone和NSDateComponents,考慮到時區。
基於此,我使用以下代碼來計算兩個日期之間的天數差異。然而,我得到的結果似乎是因爲計算完全忽略了時間。我想知道如果我做錯了什麼,或者如果這是由於某種原因設計的。
下面是代碼和數據:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comp = [calendar components:NSDayCalendarUnit fromDate:startDate toDate:stopDate options:0];
NSInteger day = [comp day];
調試輸出:
(gdb) po startDate
2011-04-01 03:52:13 +0000
(gdb) po stopDate
2011-04-03 15:52:13 +0000
(gdb) p (int) day
$1 = 2
的時區是太平洋標準時間和上述轉換後的日期,以PST有:
startDate = 2011-03-31 8:52:13 -7
stopDate = 2011-04-03 8:52:13 -7
因此,我期望他們之間有4天,而不是2.(31日,1日,2日和3日)
我認爲小時被忽略的原因是因爲如果將小時數加到計算中,我們會得到2天12小時。
我做錯了什麼或者這是如何設計的?
謝謝 萬斯