NSDate顯示和時區的關係

來源:互聯網
上載者:User

在網上看到一篇介紹NSDate的博文。在它的“NSDate初始化“章節,說在使用  NSLog(@"目前時間 date = %@",[NSDate date]);時,顯示出來的時間不是自己時區的時間,比我們小8個小時。因此判斷該問題是時區問題。

好,我承認作者判斷的很對,但是他給出的解決方案,卻令人很意外。這個點對於理解[NSDate date]有很大的誤導和迷惑性。

他的部分代碼如下:

 

因為我們在正8區,而使用NSLog顯示[NSDatedate]時,顯示的時間是GTM時區的時間。

作者將[NSDate date]的結果加上8×60×60,得到的時間就是我們正8區看到的時間。

好吧,不得不說這個方法得到的結果是符合要求的,顯示時間數字是一致的了。

下面說這個方法的不當之處。它給人一種誤導,[NSDate date]得到的時間是應該加8小時,才能正確顯示符合我們時區的時間。

何必呢?不就是要[NSDate date]符合本時區的時間數字顯示出來嗎?何必認為修改時間數值呢?

NSDate對象的顯示結果不符合,卻去修改對象本身,真真是捨本逐末。

 

剛好在stackoverflow.com上找到一帖,可以用來解釋這個問題。呵呵。

http://stackoverflow.com/questions/4547379/nsdate-is-not-returning-my-local-time-zone-default-time-zone-of-device

 

My local and default time zone is GMT +5 but when I get date and time byNSDate it return me GMT date and time.

 

For example the code and output from my code while testing on device isas, [device time zone Islamabad GMT +5]

 

 

 

Why is NSDate not giving local current time? Please help...

 

這是一個巴基斯坦人的提問,他不明白為什麼會這樣?您明白了嗎?你知道了怎麼來正確地顯示時間數字了嗎?

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.