UTCdate和UTC时间计算
我有一个string,我知道将引用UTC时间戳
@"2016-01-20T17:00:00"
现在当它转换为一个实际的NSDate它打印时返回这个:
NSLog("%@", [TimeHelper stringToDateInUtc:@"2016-01-20T17:00:00"]); -> 2016-01-20 18:00:00 +0000
与UTCdate相同的东西:
NSLog(@"Time in UTC Now: %@", [TimeHelper getNowUtcAsDate]);
我也有这种方法获取UTC的当前时间,并将string转换为UTC:
+ (NSDate*) stringToDateInUtc:(NSString*)str { NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; return [formatter dateFromString:str]; } + (NSString*) getNowUtc { NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; NSDate *now = [[NSDate alloc] init]; return [formatter stringFromDate:now]; } + (NSDate*) getNowUtcAsDate { return [TimeAndDate stringToDateInUtc:[TimeAndDate getNowUtc]]; }
我正在做一个计算时差,因为我知道发送到这些方法的string绝对是在“UTC”模式。 因此,我需要将其与实际的UTCdate时间进行比较。
那么,为什么我input的string被转换为错误的时区 – 即使它们被设置为UTC。 此外,从该方法UTC时间几乎总是错误的 – 很多参考其他职位在这里。 如果我重置我的时钟-2个小时,UTC时间戳也是-2个小时,这不应该是我使用UTC作为参考的原因。
还是仅仅是错误的输出? 相反,也许使用“timeSinceDate”方法来做计算?
要点是,无论我把时钟放回去,UTC时间总是正确的,并且从当前UTC时间开始计算时间的string始终是UTC。