2012-10-19 81 views
0

在美國執行此操作的人是否會與美國人在美國執行此操作時看到的數字相同?是+(NSTimeInterval)timeIntervalSinceReferenceDate timeZone是否敏感?

的文件說,它的時間開始於2001年1月1日格林尼治標準時間。這意味着它是在GreenWitch達到1月1日的時候。

但是,每個人都會看到不同的時鐘。這意味着它是本地化的。

所以這是不明確的。哪一個是對的?

+0

否。 見[http://stackoverflow.com/questions/3321541/timezone-dst-agnostic-timestamps-with-nsdate][1] [1]:http://stackoverflow.com/questions/3321541/timezone-dst-agnostic-timestamps-with-nsdate – xfx

回答

2

NSDate不存儲時區信息。它始終與GMT/UTC時間相關,這意味着您描述的人都會得到相同的結果。

0

沒有,根據DOC:

timeIntervalSinceReferenceDate

返回值系統的絕對基準日 之間的間隔和當前的日期(2001年,格林尼治標準時間1月1日的第一瞬間)和 時間。

當前日期取決於當地時間(+(id)日期)。所以如果一箇中國的男人像德國男人一樣按下按鈕,間隔時間會有所不同~6個小時。但是從他們的觀點來看,如果他們在當地時間下午1點按下按鈕,兩者的間隔將是相同的。

編輯:

其實我錯了,馬丁指出:

一個NSDate的表示時間點和一無所知時間 區。如果使用NSLog顯示NSDate的值(@「%@」,[NSDate date]),則日期將轉換爲使用GMT顯示的字符串。

所以要回答你的問題:是的,它會是一樣的。

+0

好的,一個人說這取決於你在哪裏。另一個人說,不,它不依賴於當前時間。順便提一下[NSDate date]的NSLog顯示GMT時間。 –

+1

這只是另一種方式:當前日期,即'[NSDate date]'的結果* *不取決於本地時區。 - 如果兩個人同時執行'[[NSDate date] timeIntervalSinceReferenceDate]',結果將是相同的。如果一箇中國人在當地時間下午1點執行它,而一個德國人在當地時間下午1點執行它,結果將會不同。 –

+1

哈,NSDate真的顯示GMT時間嗎?因爲我實際上住在格林尼治標準時間(我住在法國的國家),所以也許我做錯了斷言。我想NSDate會給你你的實際時間...嗯,這實際上很有趣。但文檔說+日期創建並返回設置爲當前日期和時間的新日期。所以如果NSDate的日期是格林威治標準時間,你對你的問題的答案是耶,但如果NSDate日期不是格林尼治標準時間,所以顯然不是。 –