美文网首页
NSTimeZone

NSTimeZone

作者: 云天涯丶 | 来源:发表于2018-03-20 15:54 被阅读91次

    NSTimeZone时区是一个地理名字,是为了克服各个地区或国家之间在使用时间上的混乱。

    基本概念:

    GMT 0:00 格林威治标准时间; UTC +00:00 校准的全球时间; CCD +08:00 中国标准时间

    夏时制,英文"DaylightSavingTime"。夏季时将时区内的时间提前(一般为1小时),以节省资源,提高效率。使用夏时制期间,当前时区相对于GMT的时间偏移量会发生变化。在某些应用中可能需要考虑。

    任何时区都以GMT为基准,即,任何NSTimeZone对象所代表的时区都是相对于GMT的,这里的相对性是NSTimeZone中最重要的属性,我们称之为当前时区相对于GMT的偏移量。一旦知道了一个偏移量,便可以确定一个时区。在iOS中,偏移量是以"秒"为单位的。

    NSTimeZone是一个类簇,我们所使用的任何NSTimeZone对象都是NSTimeZone的私有子类。

    iOS系统中的/usr/share/zoneinfo/目录中保存了所有的可根据 地理位置名称 或 时区别名 得到的时区信息。时区别名都是与具体的地理位置一一对应的。(已越狱的童鞋请看)

    iOS中的时区表示方法:GMT+0800 GMT-0800。(+:东区 -:西区 08:小时数 00:分钟数)。 GMT+0830就是指比GMT早8小时外加30分钟的时区。

    以上摘自:https://segmentfault.com/a/1190000005048962

    具体详情:

    // name由knownTimeZoneNames获取
    NSTimeZone *zone1 = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
    // abbreviation由abbreviationDictionary获取
    NSTimeZone *zone2 = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
    // GMT作参考
    NSTimeZone *zone3 = [NSTimeZone timeZoneForSecondsFromGMT:8*60*60];
    // zone距date时长
    NSInteger cc1 = [zone1 secondsFromGMTForDate:[NSDate date]];
    
    /*
    systemTimeZone:系统时区
    defaultTimeZone:默认时区(可以被修改)
    resetSystemTimeZone:重置手机系统时区
    localTimeZone:本地时区
    secondsFromGMT:距GMT时长
    */
    // 只能够修改该程序的defaultTimeZone,不能修改系统的,更不能修改其他程序的。
    [NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT+0900"]]; 
    

    在abbreviationDictionary添加中国标准时间名称缩写

    NSMutableDictionary *abbs = [[NSMutableDictionary alloc] init];
    [abbs setValuesForKeysWithDictionary:[NSTimeZone abbreviationDictionary]];
    [abbs setValue:@"Asia/Beijing" forKey:@"BJT"];
    [NSTimeZone setAbbreviationDictionary:abbs];
    

    相关文章

      网友评论

          本文标题:NSTimeZone

          本文链接:https://www.haomeiwen.com/subject/gudbqftx.html