Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como converter data e hora do MySQL para NSDate?


Sua string de formato está próxima, mas você deseja especificar os milissegundos com SSS , também:
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSX"];

Além disso, o Z em sua string de data significa "Zulu" (ou seja, GMT/UTC), então seu dateFormat deve usar Z ou X sem aspas para que ele analise corretamente o fuso horário da string. Além disso, se você estiver criando strings a partir de datas, certifique-se de definir seu fuso horário de acordo. Você também deseja definir sua localidade:
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 Perguntas e respostas técnicas QA1480 Para maiores informações.

Você também pode usar o NSISO8601DateFormatter mais recente , que tira você de algumas dessas ervas daninhas:
NSISO8601DateFormatter *formatter = [[NSISO8601DateFormatter alloc] init];
formatter.formatOptions = NSISO8601DateFormatWithFullDate | NSISO8601DateFormatWithFullTime | NSISO8601DateFormatWithFractionalSeconds;