iOS中UTC/GMT時間與地時區(qū)時間 轉(zhuǎn)換總結(jié)

  • 什么是UTC時間

    • 協(xié)調(diào)世界時(英:Coordinated Universal Time 尾抑,法:Temps Universel Coordonné)事哭,又稱世界統(tǒng)一時間,世界標(biāo)準(zhǔn)時間罩扇,國際協(xié)調(diào)時間担神。英文(CUT)和法文(TUC)的縮寫不同,作為妥協(xié)演痒,簡稱UTC(摘自百度百科) 亲轨。
    • 中國大陸、中國香港鸟顺、中國澳門惦蚊、中國臺灣、蒙古國讯嫂、新加坡蹦锋、馬來西亞、菲律賓欧芽、西澳大利亞州的時間與UTC的時差均為+8莉掂,也就是UTC+8(相差八個小時)
    • 這套時間系統(tǒng)被應(yīng)用于許多互聯(lián)網(wǎng)和萬維網(wǎng)的標(biāo)準(zhǔn)中,因此在日常開發(fā)中UTC時間的使用較為常見
  • 格林尼治標(biāo)準(zhǔn)時(GMT)

    • 是指位于倫敦郊區(qū)的皇家格林尼治天文臺的標(biāo)準(zhǔn)時間(開發(fā)中不常用)
  • 特別注意:

    • iOS中的NSDate對象存放的日期始終是UTC的標(biāo)準(zhǔn)時間(比如下面的例子千扔,服務(wù)器返回的字符串是utc時間憎妙,本地時區(qū)是北京)
    • 有結(jié)果可知:時間字符串轉(zhuǎn)成NSDate時库正,沒有指定時間字符串的時區(qū),系統(tǒng)會根據(jù)本地時區(qū)厘唾,將時間字符串轉(zhuǎn)成utc時間存放在NSDate對象中(通過Summary可以看出)褥符,而NSLog打印NSDate時,又會根據(jù)當(dāng)?shù)貢r區(qū)將utc時間轉(zhuǎn)成本地時區(qū)時間打印出來抚垃。
    • 結(jié)論:NSDate中存放的時間會自動轉(zhuǎn)換成utc時間喷楣,NSLog打印的時間會自動根據(jù)時區(qū)打印不同的結(jié)果
     NSDateFormatter *format = [[NSDateFormatter alloc] init];
    format.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    
    NSString *timeStr = @"2017-10-25 02:07:39"; //將時間字符串默認(rèn)當(dāng)本地時區(qū)處理,轉(zhuǎn)成NSDate時 -8讯柔,打印時再 +8
    NSDate *timeDate = [format dateFromString:timeStr]; // Summary 2017-10-24 18:07:39 UTC
    NSLog(@"timeDate = %@", timeDate); //timeDate = Wed Oct 25 02:07:39 2017
    
    format.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; //將時間字符串當(dāng)utc處理抡蛙,打印時根據(jù)本地時區(qū)自動打印 +8
    NSDate *utcDate = [format dateFromString:timeStr];  // Summary 2017-10-25 02:07:39 UTC
    NSLog(@"timeDate = %@", utcDate); //timeDate = Wed Oct 25 10:07:39 2017
    
    
  • 轉(zhuǎn)換函數(shù)

/**
 anyDate 轉(zhuǎn)成 本地時區(qū)的 NSDate
 */
- (NSDate *)getLocalDateFormatAnyDate:(NSDate *)anyDate {
    NSTimeZone *sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];//或GMT
    NSTimeZone *desTimeZone = [NSTimeZone localTimeZone];
    //得到源日期與世界標(biāo)準(zhǔn)時間的偏移量
    NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:anyDate];
    //目標(biāo)日期與本地時區(qū)的偏移量
    NSInteger destinationGMTOffset = [desTimeZone secondsFromGMTForDate:anyDate];
    //得到時間偏移量的差值
    NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
    //轉(zhuǎn)為現(xiàn)在時間
    NSDate* destinationDateNow = [[NSDate alloc] initWithTimeInterval:interval sinceDate:anyDate];
    return destinationDateNow;
}
/**
 將本地日期字符串轉(zhuǎn)為UTC日期字符串
 eg: 2017-10-25 02:07:39 -> 2017-10-24 18:07:39
 */
- (NSString *)getUTCStrFormateLocalStr:(NSString *)localStr {
    NSDateFormatter *format = [[NSDateFormatter alloc] init];
    format.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSDate *dateFormatted = [format dateFromString:localStr];
    format.timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    NSString *dateString = [format stringFromDate:dateFormatted];
    return dateString;
}
/**
 將UTC日期字符串轉(zhuǎn)為本地時間字符串
 eg: 2017-10-25 02:07:39  -> 2017-10-25 10:07:39
 */
- (NSString *)getLocalDateFormateUTCDate:(NSString *)utcStr {
    NSDateFormatter *format = [[NSDateFormatter alloc] init];
    format.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    format.timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    NSDate *utcDate = [format dateFromString:utcStr];
    format.timeZone = [NSTimeZone localTimeZone];
    NSString *dateString = [format stringFromDate:utcDate];
    return dateString;
}
  • 演示結(jié)果:
    NSDateFormatter *format = [[NSDateFormatter alloc] init];
    format.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    format.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
    
    NSString *utcStr = @"2017-10-25 02:07:39";
    NSDate *utcDate = [format dateFromString:utcStr];            // Summary 2017-10-25 02:07:39 UTC
    NSDate *localDate = [self getLocalDateFormatAnyDate:utcDate]; // Summary 2017-10-25 10:07:39 UTC
    NSLog(@"  utcDate = %@", [NSString stringWithFormat:@"%@", utcDate]);   //utcDate = 2017-10-25 02:07:39 +0000
    NSLog(@"localDate = %@", [NSString stringWithFormat:@"%@", localDate]);  //localDate = 2017-10-25 10:07:39 +0000
    //這樣打印的話,NSLog又會給localDate +8
    NSLog(@"localDate = %@", localDate); //localDate = Wed Oct 25 18:07:39 2017
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末魂迄,一起剝皮案震驚了整個濱河市粗截,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捣炬,老刑警劉巖熊昌,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異湿酸,居然都是意外死亡婿屹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門推溃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昂利,“玉大人,你說我怎么就攤上這事铁坎》浼椋” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵硬萍,是天一觀的道長扩所。 經(jīng)常有香客問我,道長朴乖,這世上最難降的妖魔是什么祖屏? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮买羞,結(jié)果婚禮上袁勺,老公的妹妹穿的比我還像新娘。我一直安慰自己畜普,他們只是感情好魁兼,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般咐汞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上儒鹿,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天化撕,我揣著相機與錄音,去河邊找鬼约炎。 笑死植阴,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的圾浅。 我是一名探鬼主播掠手,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狸捕!你這毒婦竟也來了喷鸽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤灸拍,失蹤者是張志新(化名)和其女友劉穎做祝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸡岗,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡混槐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了轩性。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片声登。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖揣苏,靈堂內(nèi)的尸體忽然破棺而出悯嗓,到底是詐尸還是另有隱情,我是刑警寧澤舒岸,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布绅作,位于F島的核電站,受9級特大地震影響蛾派,放射性物質(zhì)發(fā)生泄漏俄认。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一洪乍、第九天 我趴在偏房一處隱蔽的房頂上張望眯杏。 院中可真熱鬧,春花似錦壳澳、人聲如沸岂贩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萎津。三九已至卸伞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锉屈,已是汗流浹背荤傲。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留颈渊,地道東北人遂黍。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像俊嗽,于是被迫代替她去往敵國和親雾家。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • iOS開發(fā)中绍豁,經(jīng)常會遇到各種各樣的時間問題芯咧,8小時時差,時間戳妹田,求時間間隔唬党,農(nóng)歷等等。解決辦法網(wǎng)上比比皆是鬼佣,但大多...
    小李龍彪閱讀 6,291評論 1 6
  • 在iOS開發(fā)中驶拱,經(jīng)常會遇到各種各樣的時間問題,8小時時差晶衷,時間戳蓝纲,求時間間隔,農(nóng)歷等等晌纫。解決辦法網(wǎng)上比比皆是税迷,但大...
    真巧了_嘿閱讀 2,754評論 0 7
  • 在IOS中關(guān)于時間的問題比較常見,經(jīng)常會用來獲取當(dāng)前時間锹漱,或者根據(jù)當(dāng)前時間去獲取某個時間點 本文是關(guān)于時間與日期的...
    這位網(wǎng)友閱讀 9,998評論 0 9
  • 呀箭养,今天終於可以雙盤了,還可以堅持一小段時間哥牍,自己被驚喜到了毕泌。其實很早就可以雙盤,只是每次盤腿不到一分鐘就得放下來...
    HaiyanF閱讀 42評論 0 0
  • 如若我是來還債的, 那就盡量多還一些潘酗, 寧人負(fù)我杆兵,我不負(fù)人。 如若我是來報恩的仔夺, 那就盡量多報一些拧咳, 今生為人實屬...
    雜談五味閱讀 15,166評論 3 5