Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment convertir la date et l'heure de MySQL en NSDate ?

Votre chaîne de format est proche, mais vous souhaitez spécifier les millisecondes avec SSS , aussi :

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

Aussi, le Z dans votre chaîne de date signifie "Zulu" (c'est-à-dire GMT/UTC), donc votre dateFormat devrait utiliser Z ou X sans guillemets afin qu'il analyse correctement le fuseau horaire de la chaîne. De plus, si vous construisez des chaînes à partir de dates, assurez-vous de définir votre fuseau horaire en conséquence. Vous souhaitez également définir vos paramètres régionaux :

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

Voir Q&R technique QA1480 pour plus d'informations.

Vous pouvez également utiliser le nouveau NSISO8601DateFormatter , qui vous sort de certaines de ces mauvaises herbes :

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