gpt4 book ai didi

iphone - 从 NSString 转换为 NSDate 时日期发生变化

转载 作者:行者123 更新时间:2023-12-03 21:10:03 29 4
gpt4 key购买 nike

我正在 NSDateFormatter 的帮助下将 NSString 转换为 NSDate。现在,代码在具有设备和模拟器的所有操作系统中都可以正常工作,但它在英国、美国地区创建不同的输出。这是我正在使用的代码。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSString *dateString=[NSString stringWithString:@"2010-09-05 04:00:00"];

NSDate *dateObj = [dateFormatter dateFromString:dateString];

实际日期为:2010-09-05 04:00:00

美国产量:2010-09-04 21:00:00 -0700

问题似乎出在时区/区域设置的某个地方,但不知道解决方案。我也尝试过:

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];

但无法摆脱这个问题。

是否有任何简单的方法可以从 NSString 获取 NSDate 作为字符串实际表示的内容,而不受 TimeZone 的影响。我只想获取 NSString 中出现的 NSDate,日期和时间没有变化。有什么办法吗?提前致谢。

最佳答案

这取决于您如何再次输出日期。如果您使用 NSDateFormatter,您将得到相同的结果。如果您只是通过调用[日期描述]来输出日期,则输出将会有所不同,因为包含有关本地时区的信息。

正确的用法是:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSString *dateString=[NSString stringWithString:@"2010-09-05 04:00:00"];

NSDate *dateObj = [dateFormatter dateFromString:dateString];

NSString* finalDateString = [dateFormatter stringFromDate:dateObj];
[dateFormatter release];

输出:

2010-09-05 04:00:00

我已在多个时区测试了此代码。

关于iphone - 从 NSString 转换为 NSDate 时日期发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3812137/

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