我的國家位於GMT + 0。我們現在是+1小時,因爲我們在夏令時。iPhone - 考慮夏令時的當前日期
當我做
[NSDate date];
它應該返回當前的日期和時間,但是當我這樣做,我收到GMT時間不考慮夏令時。
這就是文檔說的date命令
創建並返回一個新的日期設置爲當前日期和時間。
蘋果爲什麼這麼做?爲什麼一切都如此複雜?這是一個錯誤?有沒有辦法獲得設備當前的實時狀態?與設備時鐘上顯示的時間相同嗎?
我的應用取決於日期和時間,並且位於世界各地夏令時或冬季的不同時區的用戶的日期錯誤將會是一場災難。
謝謝。
編輯
幾個答案後,我曾嘗試這樣的代碼:
NSDate *wrongToday = [NSDate date];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSString *currentTime = [dateFormatter wrongToday];
NSDate *today = [dateFormatter dateFromString:currentTime];
你猜怎麼着,今天= wrongToday ... 換句話說,沒有任何變化,我繼續有沒有夏令時的錯誤日期。 更令人驚訝的是,CurrentTime在NSString中顯示日光節約的日期...
任何線索?再次感謝。
NSDate對象表示絕對時刻。它們不受夏令時或時區的影響。要在特定時區輸出日期,您應該創建一個NSDateFormatter的實例。 – albertamg
對不起,但Apple文檔說[NSDate date]返回當前的日期和時間,這是不正確的。當前日期和時間必須考慮夏令時。 – SpaceDog
時區和夏令時是本地化問題。文件提到格林尼治標準時間在許多地方,但他們當然可以更清楚。 – MRAB