Comment puis-je convertir la date suivante "Dim 17 juil 07:48:34 +0000 2011" au format suivant "2011-07-17 07:48:34"?
J'ai utilisé NSDateFormatter
comme indiqué ci-dessous mais cela n'a pas fonctionné. Il donne null en conséquence.
NSDateFormatter *objDateFormatter = [[NSDateFormatter alloc] init];
[objDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[objDateFormatter dateFromString:sDate];
Votre format de date est incorrect pour le style de date que vous passez. Voici un document expliquant les différents modificateurs: Patterns de format de date
Pour analyser la date "Dim 17 juil 07:48:34 +0000 2011", vous auriez besoin d'un format comme ceci:
[dateFormat setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];
Pour le mettre au format suivant: "2011-07-17 07:48:34", voici le code complet:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];
NSDate *date = [dateFormatter dateFromString:sDate];
// Convert to new Date Format
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *newDate = [dateFormatter stringFromDate:date];
Si sDate est votre chaîne au format "Sun Jul 17 07:48:34 +0000 2011", vous devez la convertir en NSDate. Ensuite, vous pouvez utiliser un deuxième NSDateFormatter pour convertir cette date dans le format souhaité "aaaa-MM-jj HH: mm: ss".
Si vous avez besoin de comprendre la chaîne nécessaire pour convertir, ce site a une grande référence: http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
par exemple. "Dim 17 juil 07:48:34 +0000 2011" peut être analysé avec
[dateFormatter setDateFormat:@"EEE MMM d HH:mm:ss ZZZ yyyy"];
Comme conseil, des dates non standard comme "Jul" (devrait être juillet) peuvent poser problème ici. Il est plus rapide de simplement convertir les parties nécessaires en C simple, avec strftime (). Voir la référence: http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.ibm.etools.iseries.langref.doc/rzan5mst263.htm =
Vous pouvez ensuite reconvertir l'horodatage Unix dans un NSDate avec
[NSDate dateWithTimeIntervalSince1970:]
L'utilisation de C pour l'analyse de date/heure est généralement jusqu'à 10 fois plus rapide. NSDateFormatter est un chien lent.