一尘不染

如何将UTC日期字符串转换为本地时间(systemTimeZone)

swift

输入字符串:2012年6月14日-UTC 01:00:00

输出本地字符串:2012年6月13日-美国东部时间21:00:00

我喜欢从中获取补偿

NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
NSLog(@"Time Zone: %@", destinationTimeZone.abbreviation);

有什么建议吗?


阅读 279

收藏
2020-07-07

共1个答案

一尘不染

这应该可以满足您的需求:

NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"LLL d, yyyy - HH:mm:ss zzz";
NSDate *utc = [fmt dateFromString:@"June 14, 2012 - 01:00:00 UTC"];
fmt.timeZone = [NSTimeZone systemTimeZone];
NSString *local = [fmt stringFromDate:utc];
NSLog(@"%@", local);

请注意,您的示例是错误的:在UTC的6月14日凌晨1点,在EST,标准时间晚上8点或夏令时仍然是6月13日。在我的系统上,该程序会打印

Jun 13, 2012 - 21:00:00 EDT
2020-07-07