web-dev-qa-db-fra.com

NSDateFormatter "Month" en 3 lettres au lieu du mot entier

    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.

27
bruno

Avez-vous essayé: [formatter setDateFormat:@"dd-MMM-YYYY HH:mm"]; puis [formatter stringFromDate:someNSDate];

50
graver

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)

26
Dan Lingman

Dans Swift

let dateFormatter = NSDateFormatter()

dateFormatter.dateFormat = "dd MMM yyyy HH:mm"

dateFormatter.stringFromDate(NSDate())
4
hellosheikh

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é.

2
CodeBender

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..
        ..
1
ingconti

En fait, vous pouvez définir votre dateStyle sur moyen (c.-à-d. 'Jan', 'Feb' etc.) comme ceci:

[formatter setDateStyle:NSDateFormatterMediumStyle];
1
Alladinian