從服務器獲取到的時間直接轉換成NSString 會差8個小時,原因是 從服務器獲取的時間 直接轉為string,會轉成 本地時區。
解決辦法:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSString *titleName = [formatter stringFromDate:date];
設定時區之后轉換就不會出現這個問題了。
另外普及一下基本的術語
格林威治標準時間GMT 十七世紀,格林威治皇家天文臺為了海上霸權的擴張計畫而進行天體觀測。1675年舊皇家觀測所(Old Royal Observatory) 正式成立,到了1884年決定以通過格林威治的子午線作為劃分地球東西兩半球的經度零度。觀測所門口墻上有一個標志24小時的時鐘,顯示當下的時間,對全球而言,這里所設定的時間是世界時間參考點,全球都以格林威治的時間作為標準來設定時間,這就是我們耳熟能詳的「格林威治標準時間」(Greenwich Mean Time,簡稱G.M.T.)的由來,標示在手表上,則代表此表具有兩地時間功能,也就是同時可以顯示原居地和另一個國度的時間。
世界協調時間UTC 多數的兩地時間表都以GMT來表示,但也有些兩地時間表上看不到GMT字樣,出現的反而是UTC這3個英文字母,究竟何謂UTC?事實上,UTC指的是Coordinated Universal Time- 世界協調時間(又稱世界標準時間、世界統一時間),是經過平均太陽時(以格林威治時間GMT為準)、地軸運動修正后的新時標以及以「秒」為單位的國際原子時所綜合精算而成的時間,計算過程相當嚴謹精密,因此若以「世界標準時間」的角度來說,UTC比GMT來得更加精準。其誤差值必須保持在0.9秒以內,若大于0.9秒則由位于巴黎的國際地球自轉事務中央局發布閏秒,使UTC與地球自轉周期一致。所以基本上UTC的本質強調的是比GMT更為精確的世界時間標準,不過對于現行表款來說,GMT與UTC的功能與精確度是沒有差別的。