iOS 時區問題總結 NSTimeZone


 基本概念

  • GMT 0:00 格林威治標准時間; UTC +00:00 校准的全球時間; CCD +08:00 中國標准時間 [來自百度百科]
  • 夏時制,英文"DaylightSavingTime"。夏季時將時區內的時間提前(一般為1小時),以節省資源,提高效率。使用夏時制期間,當前時區相對於GMT的時間偏移量會發生變化。在某些應用中可能需要考慮。
  • 任何時區都以GMT為基准,即,任何NSTimeZone對象所代表的時區都是相對於GMT的,這里的相對性是NSTimeZone中最重要的屬性,我們稱之為當前時區相對於GMT的偏移量。一旦知道了一個偏移量,便可以確定一個時區。在iOS中,偏移量是以"秒"為單位的。
  • NSTimeZone是一個類簇,我們所使用的任何NSTimeZone對象都是NSTimeZone的私有子類。
  • iOS中的時間類NSDate中存儲的時間,都是相對於GMT的,我們使用NSDate時,會根據App的時區設置返回與時區對應的數據。
  • iOS系統中的/usr/share/zoneinfo/目錄中保存了所有的可根據 地理位置名稱 或 時區別名 得到的時區信息。時區別名都是與具體的地理位置一一對應的。(已越獄的童鞋請看)
  • iOS中的時區表示方法:GMT+0800 GMT-0800。(+:東區 -:西區 08:小時數 00:分鍾數)。 GMT+0830就是指比GMT早8小時外加30分鍾的時區。

 //根據name得到對應時區

        NSTimeZone *timezone = [[NSTimeZone alloc] initWithName:@"Africa/Abidjan"];

//根據時間偏移量(秒)得到時區

        NSTimeZone *timezone = [NSTimeZone timeZoneForSecondsFromGMT:@"+8"*60*60];

 

------------------------------------------------轉換時區方法------------------------------------------------

 //根據當前的時區 得到對應的時間   timezone為你已經知道的時區  

        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

        //設定時間格式

        [formatter setDateFormat:@"YYYY-MM-dd HH:mm"];

        [formatter setTimeZone:timezone];

//當前時間為stringTime

        NSString *stringTime = @"2015-03-04 11:23";

        NSDate *myDate = [formatter dateFromString:stringTime];

//根據想要得到的時區的時區  得到該時區的時間

         [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:@"+12"*60*60]];

//根據當前的時間myDate 得到 對方時區的時間

        NSString *dateTime = [formatter stringFromDate:myDate];


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM