2012-01-30 103 views
0

我有以下代碼。當我在我的iOS 3.1.3設備上運行它時(它克服它!)它按預期工作,但是當我在模擬器(iOS 5和4.3)上運行它時,它是1分15秒(9:01:15 )。這是因爲我的代碼,模擬器中的錯誤還是iOS 4+中的錯誤?NSDateComponents在模擬器上運行

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *components = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:[NSDate date]]; 
components.hour = 9; 
components.minute = 0; 
NSDate *date = [calendar dateFromComponents:components]; // <-- date is off on simulator 

感謝您的幫助!

回答

2

我不完全理解爲什麼會出現這種情況,但是這種情況發生在使用dateFromComponents:很久以前創建日期時發生。具體來說,截止日期似乎是1847年12月1日。早於上午12點的任何事情似乎最終都會在15分鐘後關閉。

在你的情況下,這是因爲如果你只設置components.hourcomponents.minute,你會得到一個日期從1月1日,1AD。

如果你設定年,月,日的東西更近,這樣的:

components.year = 2012; 
components.month = 2; 
components.day = 6; 

然後你會得到正確的輸出(我在的iOS模擬器得到):

2012-02-06 09:00:00 +0000 
+0

啊,這可以解決它。謝謝! – jrtc27 2012-02-06 16:36:15

+1

可能是因爲(根據維基百科)這是公司切換到英國的標準時間(http://en.wikipedia.org/wiki/Railway_time#Great_Britain)。 – jrtc27 2012-02-06 16:40:16

+0

哎呀 - 忘了接受你的答案! – jrtc27 2012-02-06 21:40:58