11
votes

NsdateFormatter SetdateFormat selon CurrentLocale

Je vais en colère avec, probablement, un problème stupide.

J'ai 3 cordes: année, mois et jour. Je dois avoir une date dans le bon format basé sur CurrentLocale, alors c'est-à-dire si l'actuelLocale LocalIdentifier est EN_US, mon dateformat devrait être: MMM / DD / AAAA

Si c'est FR_FR, DateFormat devrait être DD / MMM / AAAA

Je ne pense pas que la seule façon de le faire est d'obtenir actuelLocale LocalIdentifier et de commencer avec un tas de si alors.

Merci d'avance.

max


0 commentaires

6 Réponses :


7
votes

Regardez les NsdatEcomponents pour créer un NSDate, puis utilisez NSDateformatter pour le formater. NsdateFormatter utilise les normes locales actuelles pour formater les dates, basée sur le style de format (par exemple,
nsdateformattermediumstyle ).


1 commentaires

Merci beaucoup. Nsdatecomenents a aidé.



34
votes

Si je comprends votre question, vous souhaitez définir votre Nsdateformatter code> sur la localisation de l'appareil de l'utilisateur. Pour cela, vous pouvez simplement faire quelque chose comme ceci:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setLocale:[NSLocale currentLocale]];
NSDate *date = [NSDate date];
NSString *dateString = [dateFormatter stringFromDate:date];


0 commentaires

2
votes
-(NSString *) stringFromDate:(NSDate *) date{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];

    [dateFormatter setLocale:[NSLocale currentLocale]];

    NSString *dateString = [dateFormatter stringFromDate:date];

    [dateFormatter release];

    return dateString;
}

-(NSDate *) dateFromString:(NSString *) dateInString{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];

    [dateFormatter setLocale:[NSLocale currentLocale]];

    NSDate *dateFromString = [dateFormatter dateFromString:dateInString];

    [dateFormatter release];

    return dateFromString;
}
I hope this helps.

0 commentaires

0
votes

Si vous souhaitez avoir plus de flexibilité sur le format que les formats utilisables avec SetDatestyle, consultez ma réponse à une question similaire: https://stackoverflow.com/a/20219610/1896336


0 commentaires

4
votes

dans SWIFT 3:

let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .none
formatter.locale = Locale.current
let date = Date()
let dateString = formatter.string(from: date)
print(dateString)


0 commentaires

1
votes

Consultez ce lien pour comprendre comment nsdateformatter basé sur http://www.codingexplorer.com/swiftly-getting-human-raleadable-date-nsdateformatter/


0 commentaires