Váš formátovací řetězec je blízko, ale chcete zadat milisekundy pomocí SSS
, také:
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSX"];
Také Z
ve vašem datovém řetězci znamená „Zulu“ (tj. GMT/UTC), takže váš dateFormat
by měl používat Z
nebo X
bez uvozovek, aby správně analyzoval časové pásmo řetězce. Pokud také vytváříte řetězce z dat, nezapomeňte podle toho nastavit časové pásmo. Chcete také nastavit své národní prostředí:
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];
Viz Technické otázky a odpovědi QA1480 pro více informací.
Můžete také použít novější NSISO8601DateFormatter
, který vás dostane z některých těch plevelů:
NSISO8601DateFormatter *formatter = [[NSISO8601DateFormatter alloc] init];
formatter.formatOptions = NSISO8601DateFormatWithFullDate | NSISO8601DateFormatWithFullTime | NSISO8601DateFormatWithFractionalSeconds;