放线菌壮观素T时间与地时区时间

By admin in 天文台 on 2019年4月21日
  • 什么是UTC时间

    • 谐和世界时(英:Coordinated Universal Time ,法:Temps Universel
      Coordonné),又称天文台,世界统一时间,世界标准时间,国际和睦时间。英文(CUT)和法文(TUC)的缩写不一致,作为妥胁,简称UTC(摘自百度完善)
    • 中原陆上、中华夏族民共和国香岛、中中原人民共和国墨西达曼、中夏族民共和国广东、蒙古国、新加坡共和国、马来西亚、菲律宾、西澳大热那亚(Australia)州的年华与UTC的时差均为+捌,也正是UTC+8(相差八个钟头)
    • 那套时间系列被运用于广大网络和万维网的正经中,因而在平凡支出中UTC时间的利用比较广泛
  • 格林尼治标准时(奇霉素T)

    • 是指位于London禹会区的皇家格林尼治天文台的正规化时间(开采中不常用)
  • 尤其注意:

    • iOS中的NSDate对象存放的日子平素是UTC的规范时间(比方上边包车型地铁事例,服务器重临的字符串是utc时间,当地时区是北京市)
    • 有结果可以:时间字符串转成NSDate时,未有点名时间字符串的时区,系统会基于地点时区,将时间字符串转成utc时间存放在NSDate对象中(通过Summary能够看到),而NSLog打字与印刷NSDate时,又会依据当地时区将utc时间转费用地时区时间打字与印刷出来。
    • 敲定:NSDate中存放的年月会活动转变来utc时间,NSLog打字与印刷的岁月会活动依照时区打字与印刷不一样的结果

     NSDateFormatter *format = [[NSDateFormatter alloc] init];
    format.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    
    NSString *timeStr = @"2017-10-25 02:07:39"; //将时间字符串默认当本地时区处理,转成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"]; //将时间字符串当utc处理,打印时根据本地时区自动打印 +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
    
  • 改造函数

/**
 anyDate 转成 本地时区的 NSDate
 */
- (NSDate *)getLocalDateFormatAnyDate:(NSDate *)anyDate {
    NSTimeZone *sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];//或GMT
    NSTimeZone *desTimeZone = [NSTimeZone localTimeZone];
    //得到源日期与世界标准时间的偏移量
    NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:anyDate];
    //目标日期与本地时区的偏移量
    NSInteger destinationGMTOffset = [desTimeZone secondsFromGMTForDate:anyDate];
    //得到时间偏移量的差值
    NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
    //转为现在时间
    NSDate* destinationDateNow = [[NSDate alloc] initWithTimeInterval:interval sinceDate:anyDate];
    return destinationDateNow;
}
/**
 将本地日期字符串转为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日期字符串转为本地时间字符串
 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;
}
  • 演示结果:

    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
    

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 亚洲必赢手机官网 版权所有