在 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),偏移量取决于用户的偏移量。
谢谢!