sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo convertir MySQL datetime a NSDate?

Su cadena de formato está cerca, pero desea especificar los milisegundos con SSS , también:

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

Además, la Z en su cadena de fecha significa "Zulu" (es decir, GMT/UTC), por lo que su dateFormat debe usar Z o X sin comillas para que analice correctamente la zona horaria de la cadena. Además, si está creando cadenas a partir de fechas, asegúrese de configurar su zona horaria en consecuencia. También desea establecer su configuración regional:

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

Consulte Preguntas y respuestas técnicas QA1480 para más información.

También puede usar el nuevo NSISO8601DateFormatter , que te saca de algunas de esas malas hierbas:

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