NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-YYYY HH:mm"];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
Si je choisis "MM", je reçois le mois en nombre: "09-05-2012 15:33" Si je choisis "MMMM", je reçois le mois en Word: "09-May-2012 15:33"
Ce que je voulais, c’est le mois en 3 lettres abrégées.
Exemple: "Janvier" serait "Jan"
Dans ce cas, le mois de mai est correct car il ne comporte que 3 lettres.
Avez-vous essayé: [formatter setDateFormat:@"dd-MMM-YYYY HH:mm"];
puis [formatter stringFromDate:someNSDate];
SI vous obtenez les deux choses dans le mauvais ordre, vous n'obtenez pas la sortie attendue.
[formatter setDateFormat:@"MMM"];
[formatter setDateStyle:NSDateFormatterMediumStyle];
ne donne pas les mêmes résultats que:
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setDateFormat:@"MMM"];
(Le second de ces deux extraits est maintenant en train de distribuer avec plaisir septembre, octobre, etc. dans mon application)
Dans Swift
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy HH:mm"
dateFormatter.stringFromDate(NSDate())
Il s’agit d’une solution simplifiée qui fonctionne avec Swift 4 pour produire une sortie de 3 lettres par mois:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMM YYYY, HH:mm:ss"
Et pour vérifier:
print(dateFormatter.string(from: Date())) // 20 Mar 2018, 23:41:40
Comme indiqué précédemment, MMM
est la syntaxe correcte pour obtenir la sortie du mois souhaité.
pour Swift 4 aller avec:
if let dateFormatter = DateFormatter(){
dateFormatter.dateStyle = .medium
// eventually:
//let locale = Locale(identifier: ...
//dateFormatter!.locale = locale
dateFormatter.dateStyle = .medium
dateFormatter!.dateFormat = "dd MMM YYYY, HH:mm:ss"
} else..
..
En fait, vous pouvez définir votre dateStyle sur moyen (c.-à-d. 'Jan', 'Feb' etc.) comme ceci:
[formatter setDateStyle:NSDateFormatterMediumStyle];