zoukankan      html  css  js  c++  java
  • 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];

  • 相关阅读:
    第三篇——第二部分——第三文 配置SQL Server镜像——域环境
    DOS命令学习(从入门到精通)
    Cocos2d-x3.0 LoadingBar
    微信对接HIS——微信可查检验结果
    微信iOS SDK文档总结
    Azure编程笔记(4):配置Cloud Service的证书
    android的ViewPager和Animation的一些使用(一)
    小虾米的鳄鱼梦
    Hadoop源码分析21:namenode概要
    Hadoop源码分析20:datanode概要
  • 原文地址:https://www.cnblogs.com/qiutangfengmian/p/5288201.html
Copyright © 2011-2022 走看看