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。