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];

  • 相关阅读:
    Pythonday01
    PYTHON_DAY2
    PYTHON_DAY3
    数据字典生成SQL语句
    Spring cloud Netflix >readMe
    SecureCRT的安装与激活
    MyBatis映射文件UserMapper.xml(mysql环境)
    数据库模糊查询4种用法
    MyBatis配置文件myBatisconfig.xml
    计算机基础:2进制和2进制算法。
  • 原文地址:https://www.cnblogs.com/qiutangfengmian/p/5288201.html
Copyright © 2011-2022 走看看