2011-07-22 24 views
0

我使用下面的代碼將我的時區設置爲歐洲斯德哥爾摩。Objective-C - NSTimeZone 2小時錯誤?

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Stockholm"]]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; 

NSDate *webUpdateDate = [dateFormatter dateFromString:@"2011-07-22 22:10"]; 
// Outputs "2011-07-22 20:10 +0000" 

任何人都知道爲什麼?

+3

我懷疑堆棧溢出的任何人都知道你爲什麼設置時區到斯德哥爾摩。 :) –

+0

如果一直如此,那麼爲什麼不手動將其設回2小時? – Dair

回答

3

我假設您正在使用NSLog檢查日期。一個NSDate對象表示一個絕對時間 - 它沒有時區概念,所以當它被要求輸入它的description時,它顯示爲它是GMT時間。如果您想獲得絕對時間斯德哥爾摩時區代表,你需要再次使用的日期格式:

NSLog(@"%@", [dateFormatter stringFromDate:webUpdateDate]); 

由於日經格式化,已經有它的時區設置爲斯德哥爾摩最初創建的,我相信這會給你輸入相同的字符串:@"2011-07-22 22:10"

相關問題