gpt4 book ai didi

iphone - 尝试从祖鲁时间的 UTC 字符串获取日期时为 Nil NSDate

转载 作者:太空狗 更新时间:2023-10-30 03:12:14 25 4
gpt4 key购买 nike

在 Objective-C 中编写一个 iPhone 应用程序,我有一个字符串形式的日期(UTC 格式,末尾有一个 Z 表示零 UTC 偏移量或祖鲁时间),我需要将其解析为 NSDate 对象。

一些代码:

NSDateFormatter* df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];
NSString* str = @"2009-08-11T06:00:00.000Z";
NSDate* date = [df dateFromString:str];
通过调试器运行它, date 最终为 nil!我假设它与我的日期格式字符串有关。

如何修复它以正确解析日期字符串?

一个想法是使日期格式文字中的 Z ,将日期格式设置为 yyyy-MM-dd'T'HH:mm:ss.SSS'Z'.

这会起作用,除非当 Z 被解析为文字时,日期会丢失偏移量信息,因此不明确,因此被解释为本地时间。

例如,如果要解析的字符串是 2009-08-11T06:00:00.000Z(祖鲁时间 6:00),它将被解释为本地时间 6:00,然后将应用不正确的偏移量。然后它将被解析为 2009-08-11T06:00:00.000-600(祖鲁时间 12:00),偏移量取决于用户的偏移量。

谢谢!

最佳答案

我也遇到过这个问题,我不确定这是 Apple 代码中的 API 错误,还是我缺乏理解,但我已经通过在我的日期字符串中使用小时偏移来解决这个问题。

如果您将示例中的代码更改为:

NSDateFormatter* df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];
NSString* str = @"2009-08-11T06:00:00.000-0700"; // NOTE -0700 is the only change
NSDate* date = [df dateFromString:str];

它现在将解析日期字符串。当然 -0700 小时是我的偏移量,您必须将其更改为您的。希望这会有所帮助。

关于iphone - 尝试从祖鲁时间的 UTC 字符串获取日期时为 Nil NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1263455/

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