gpt4 book ai didi

objective-c - 使用 NSDateFormatter 保留原始时区

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:03 25 4
gpt4 key购买 nike

我有像 2011-01-19T20:30:00-5:00 这样的字符串,我想将它们解析为 NSDate,但我想保留原始时区。 p>

NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat: @"yyyy-MM-dd'T'HH:mm:ssZ"];
NSLog(@"%@", [dateFormatter dateFromString: dateString]);
[dateFormatter release];

该片段给了我 2011-01-20 02:30:00 +0100 这也是正确的,但我希望保留原始时区 -0500 而不是我的本地时区 +0100 NSDate。

最佳答案

首先,您应该知道 NSDate 对象不存储与其区域设置或时区相关的任何内容,并且在内部它们基本上表示为自格林威治标准时间 2001 年 1 月 1 日第一刻以来的秒数。

如果您能够为 NSTimezone 对象中的字符串设置时区,只需在执行 dateFromString 之前执行以下操作:

[dateFormatter setTimeZone:timezoneForString];

你会准备好。

如果您无法获得 NSTimezone,而您只有一个字符串“2011-01-19T20:30:00-5:00”,那么没有一种很好的方法可以从-5:00,因为并不总是有明确的方法从 UTC 偏移量中获取时区 ID(例如,“America/Los_Angeles”)或时区名称(例如,“Pacific Daylight Time”)。因此,您必须编写自己的代码来手动提取偏移量、存储它并在显示之前将其添加到时间中。

关于objective-c - 使用 NSDateFormatter 保留原始时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4660596/

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