2011-07-19 49 views
4

這是我的代碼。爲什麼NSDate報告錯誤的日期?

NSDate *today = [NSDate date];   
NSString *todayString = [[today description] substringToIndex:10]; 
NSLog(@"Today: %@", todayString); 

我得到2011-07-19而不是2011-07-18。任何想法可能是什麼問題?

+0

什麼是您所在的時區以及您獲取日期的設備的時區是什麼? –

+0

也會驗證操作系統中服務器的實際系統時間。 – Randy

+0

我的時區設置爲東部時區。我Mac上的當前日期是「2011年7月18日星期一」。另外,我正在模擬器中運行我的應用程序。 – David

回答

10

NSDate的description方法以UTC爲單位返回時間,如果您在夏令時期間在美國東部時區,則比您的掛鐘時間晚4個小時。換句話說,您的時間晚上10點是UTC的第二天凌晨2點。

修復此問題的常用方法是改用NSDateFormatter,並在必要時明確設置時區。

+0

爲我修好了。謝謝。 – David

7
NSDate *today = [NSDate date]; 
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormat setDateFormat:@"dd-MM-yyyy"]; 
NSString *dateString = [dateFormat stringFromDate:today]; 
+0

謝謝,這正是我所做的。 – David

相關問題