Din formatstreng er tæt på, men du vil angive millisekunderne med SSS
også:
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSX"];
Også Z
i din datostreng står for "Zulu" (dvs. GMT/UTC), så dit dateFormat
skal bruge Z
eller X
uden anførselstegn, så den analyserer strengens tidszone korrekt. Hvis du bygger strenge fra datoer, skal du også sørge for at indstille din tidszone i overensstemmelse hermed. Du ønsker også at indstille din lokalitet:
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.locale = enUSPOSIXLocale;
formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSX";
formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
Se Teknisk spørgsmål og svar QA1480 for mere information.
Du kan også bruge den nyere NSISO8601DateFormatter
, som får dig ud af noget af det ukrudt:
NSISO8601DateFormatter *formatter = [[NSISO8601DateFormatter alloc] init];
formatter.formatOptions = NSISO8601DateFormatWithFullDate | NSISO8601DateFormatWithFullTime | NSISO8601DateFormatWithFractionalSeconds;