Mysql
 sql >> Database >  >> RDS >> Mysql

Come convertire MySQL datetime in NSDate?

La tua stringa di formato è vicina, ma vuoi specificare i millisecondi con SSS anche :

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

Inoltre, la Z nella stringa della tua data sta per "Zulu" (cioè GMT/UTC), quindi il tuo dateFormat dovrebbe usare Z o X senza virgolette in modo che analizzi correttamente il fuso orario della stringa. Inoltre, se stai creando stringhe dalle date, assicurati di impostare il tuo fuso orario di conseguenza. Vuoi anche impostare la tua lingua:

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

Vedi Domande e risposte tecniche QA1480 per ulteriori informazioni.

Puoi anche utilizzare il nuovo NSISO8601DateFormatter , che ti fa uscire da alcune di quelle erbacce:

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