Написание iPhone-приложения в Objective-C, у меня есть дата в строковой форме (в формате UTC, с Z на конце, чтобы обозначить нулевое смещение UTC или время zulu), которые мне нужно проанализировать в 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];
Running this through the debugger, date
ends up nil
! I'm assuming it has something to do with my date format string.How can I fix it to correctly parse the date string?
A thought would be to make the
Z
in the date format literal, a la setting the date format to yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
.That would work, except when the Z is parsed as a literal, the date loses offset information, and so is ambiguous, and therefore interpreted to be local time.
For example, if the string to parse was 2009-08-11T06:00:00.000Z (6:00 zulu time) it would be interpreted as 6:00 local time, and an incorrect offset would then be applied. It would then be parsed as 2009-08-11T06:00:00.000-600 (12:00 zulu time) with the offset depending on the user offset.
Thanks!