Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie konvertiere ich MySQL Datetime in NSDate?

Ihre Formatzeichenfolge ist nah, aber Sie möchten die Millisekunden mit SSS angeben , auch:

[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSX"];

Auch das Z in Ihrem Datumsstring steht für "Zulu" (d.h. GMT/UTC), also Ihr dateFormat sollte Z verwenden oder X ohne Anführungszeichen, damit die Zeitzone der Zeichenfolge korrekt analysiert wird. Stellen Sie außerdem sicher, dass Sie Ihre Zeitzone entsprechend einstellen, wenn Sie Zeichenfolgen aus Datumsangaben erstellen. Sie möchten auch Ihr Gebietsschema festlegen:

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];

Siehe Technische Fragen und Antworten QA1480 für weitere Informationen.

Sie können auch den neueren NSISO8601DateFormatter verwenden , was Sie aus einigen dieser Unkräuter herausholt:

NSISO8601DateFormatter *formatter = [[NSISO8601DateFormatter alloc] init];
formatter.formatOptions = NSISO8601DateFormatWithFullDate | NSISO8601DateFormatWithFullTime | NSISO8601DateFormatWithFractionalSeconds;