gpt4 book ai didi

iphone - utc 和本地日期时间转换

转载 作者:行者123 更新时间:2023-11-29 04:16:40 25 4
gpt4 key购买 nike

服务器给出 UTC 格式的日期和时间。

2012-11-28T10:32:15+01:00

UTC 将被格式化为:2012-11-28 10:32:15当前实际本地日期和时间为 2012-11-28 11:32:15

我想将 utc 格式保存在数据库中,稍后在 UI 中显示之前将其转换为用户的本地日期和时间。我写了下面的代码。但时间偏移是错误的。即使时间偏移量为 + 1 小时,它也会向 UTC 时间添加 2 小时而不是 1 小时。

NSDateFormatter *utc = [[NSDateFormatter alloc] init];
[utc setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[utc setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *dtUTC = [utc dateFromString:@"2012-11-28 10:32:15"];

double i =[[NSTimeZone systemTimeZone] secondsFromGMTForDate:[NSDate date ]];

NSDateFormatter *dfLocal = [[NSDateFormatter alloc] init];
[dfLocal setDateFormat:@"yy-MM-dd HH:mm:ss"];
[dfLocal setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:i]];
NSDate *localDateTime= [dtUTC dateByAddingTimeInterval:i];
NSString *time =[dfLocal stringFromDate:localDateTime];
NSLog(@"original UTC %@ now local: %@", dtUTC, time);

和日志:

time offset : 1.000000
original UTC 2012-11-28 10:32:15 +0000 now local: 12-11-28 12:32:15

它应该是2012-11-28 11:32:15但给出了2012-11-28 12:32:15我做错了什么?

最佳答案

发布问题后现在就可以了。我找到了解决方案。太神奇了!

NSDateFormatter *utc = [[NSDateFormatter alloc] init];
[utc setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[utc setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *dtUTC = [utc dateFromString:@"2012-11-28 10:32:15"];

NSDateFormatter *dfLocal = [[NSDateFormatter alloc] init];
[dfLocal setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dfLocal setTimeZone:[NSTimeZone localTimeZone]];

NSString *time =[dfLocal stringFromDate:dtUTC];
NSLog(@"original UTC %@ now local: %@", dtUTC, time);

和日志:

time offset : 1.000000
original UTC 2012-11-28 10:32:15 +0000 now local: **2012-11-28 11:32:15**

感谢大家的帮助

关于iphone - utc 和本地日期时间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13603429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com