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

  • 相关阅读:
    014 接口和抽象类有什么区别?
    013 抽象类能使用 final 修饰吗?
    web前端开发入门_ web前端需要掌握的知识体系
    使用Ajax同步请求时,等待时间过长增加页面提示问题
    h5移动端禁止长按图片保存
    深入浏览器事件循环的本质
    power assert_更智能、优雅的全方位 assert 断言库
    网络串流播放_HTML5如何优化视频文件以便在网络上更快地串流播放
    什么是断点续传?前端如何实现文件的断点续传
    移动端自适应
  • 原文地址:https://www.cnblogs.com/qiutangfengmian/p/5288201.html
Copyright © 2011-2022 走看看