iOS 手機時區擷取問題

來源:互聯網
上載者:User

標籤:nat   速度   alt   相對   等於   eset   integer   重設   sar   

  

時區縮寫 UTC, CST, GMT, CEST 以及轉換

UTC是國際標準時間(Universal Time Coordinated)英文縮寫,是由國際無線電諮詢委員會規定和推薦,並由國際時間局(BIH)負責保持的以秒為基礎的時間標度。UTC相當於本初子午線(即經度0度)上的平均太陽時,過去曾用格林威治平均時(GMT)來表示.北京時間比UTC時間早8小時,以1999年1月1日0000UTC為例,UTC時間是零點,北京時間為1999年1月1日早上8點整。

 

GMT(Greenwich Mean Time)是格林尼治平時: 
由於地球軌道並非圓形,其運行速度又隨著地球與太陽的距離改變而出現變化,因此視太陽時欠缺均勻性。視太陽日的長度同時亦受到地球自轉軸相對軌道面的傾斜度所影響。為著要糾正上述的不均勻性,天文學家計算地球非圓形軌跡與極軸傾斜對視太陽時的效應。平太陽時就是指經修訂後的視太陽時。在格林尼治子午線上的平太陽時稱為世界時(UT0),又叫格林尼治平時(GMT)。 為了確保國際標準時間與世界時(UT1)相差不會超過0.9秒,有需要時便會在國際標準時間內加上正或負閏秒。因此國際標準時間與國際原子時(TAI)之間會出現若干整數秒的差別。位於巴黎的國際地球自轉事務中央局(IERS)負責決定何時加入閏秒。

也就是說,UTC 基本上等於GMT

 

CET

(英語:Central European Time,CET)歐洲中部時間是比世界標準時間(UTC)早一個小時的時區名稱之一。它被大部分歐洲國家和部分北非國家採用。冬季時間為UTC+1,夏季歐洲夏令時為UTC+2

 

CEST

歐洲中部夏令時間(Central European Summer Time,簡稱CEST)比世界標準時間(UTC)早兩個小時的時區名稱之一。它被大部分歐洲國家和部分北非國家在夏天採用(UTC+2),冬季這些國家使用歐洲中部時間(UTC+1)

時區線上轉換工具網站  http://www.timebie.com/timezone/centraleuropeansummerbeijing.php 

 

 

CST

CST卻同時可以代表如下 4 個不同的時區: 

Central Standard Time (USA) UTC-6:00 

Central Standard Time (Australia) UTC+9:30 
China Standard Time UTC+8:00 
Cuba Standard Time UTC-4:00 
可見,CST可以同時表示美國,澳大利亞,中國,古巴四個國家的標準時間。 也就是說,這個需要根據使用的情境來確定使用的是哪個時區。

////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////

1. 標準的擷取時區的正確方法

  [NSTimeZone resetSystemTimeZone]; // 重設系統的時區

    NSInteger offset = [NSTimeZone localTimeZone].secondsFromGMT;

    offset = offset/3600;

    NSString *tzStr = [NSString stringWithFormat:@"%ld", (long)offset];

 擷取的時區:(Asia/Shanghai (GMT+8) offset 28800)

2.  截取 GMT 方法

    //擷取當地的時區

    NSString *tzStr;

    NSTimeZone *localTimeZone = [NSTimeZone localTimeZone];

    NSArray *zoneArray = [[NSString stringWithFormat:@"%@", localTimeZone] componentsSeparatedByString:@"GMT"];

    NSString *tempTZ = [NSString stringWithFormat:@"%@", zoneArray.lastObject];

    // eg: +8 去掉"+", -8 傳入全部, +0 / -0

    // - 1 ~ 12, + 1 ~ +12, 0

    if([tempTZ hasPrefix:@"+"]) {

        tzStr = [NSString stringWithFormat:@"%c", [tempTZ characterAtIndex:1]];

    }else  if([tempTZ hasPrefix:@"-"]){

        tzStr = [NSString stringWithFormat:@"%@", [tempTZ substringToIndex:2]];

    }else if([tempTZ hasPrefix:@"0"]) {

        tzStr = [NSString stringWithFormat:@"%@", [tempTZ substringToIndex:1]];

    }

擷取的時區: Europe/Berlin (CEST) offset 7200 (Daylight)

鑒於有些時區非攜帶 GMT 格式嗎故 "方法二 " 不可行, 採用 "方法一".

根據距離 0 時區偏差的秒數算出時區. 

iOS 手機時區擷取問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.