web-dev-qa-db-fra.com

Comment puis-je formater la date par paramètres régionaux en Java?

J'ai besoin de formater la date dans une application qui a plusieurs langues, quelle est la meilleure façon de formater la date, car chaque pays a un format de date différent, est-il donc possible de formater la date en fonction des paramètres régionaux?

26
newbie

Oui, en utilisant DateFormat.getDateInstance (style int, Locale aLocale) Ceci affiche la date actuelle d'une manière spécifique aux paramètres régionaux.

Ainsi, par exemple:

DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, yourLocale);
String formattedDate = df.format(yourDate);

Voir la documentation pour la signification exacte du paramètre de style (SHORT, MEDIUM, etc.)

59
Bozho

SimpleDateFormat a un constructeur qui prend les paramètres régionaux, avez-vous essayé cela?

http://Java.Sun.com/javase/6/docs/api/Java/text/SimpleDateFormat.html

Quelque chose comme new SimpleDateFormat("your-pattern-here", Locale.getDefault());

13
laura

Joda-Time

Utilisation de la bibliothèque Joda-Time 2.4. La classe DateTimeFormat est une fabrique de formateurs DateTimeFormatter. Cette classe propose une méthode forStyle pour accéder aux formateurs appropriés à un Locale.

DateTimeFormatter formatter = DateTimeFormat.forStyle( "MM" ).withLocale( Java.util.Locale.CANADA_FRENCH );
String output = formatter.print( DateTime.now( DateTimeZone.forID( "America/Montreal" ) ) );

L'argument à deux lettres spécifie un format pour la partie date et la partie heure. Spécifiez un caractère "S" pour le style court, "M" pour le moyen, "L" pour le long et "F" pour le plein. Une date ou une heure peut être omise en spécifiant un caractère de style '-' HYPHEN.

Notez que nous avons spécifié à la fois un paramètre régional et un fuseau horaire. Certaines personnes confondent les deux.

  • Un fuseau horaire est un décalage par rapport à l'UTC et un ensemble de règles pour l'heure d'été et d'autres anomalies ainsi que leurs modifications historiques.
  • Un paramètre régional est une langue humaine telle que le français, plus un code de pays tel que le Canada qui représente les pratiques culturelles, y compris le formatage des chaînes de date-heure.

Nous avons besoin de toutes ces pièces pour générer correctement une représentation sous forme de chaîne d'une valeur date-heure.

2
Basil Bourque

Jetez un oeil à Java.text.DateFormat . La classe dérivée, Java.text.SimpleDateFormat est plus facile à utiliser (avec un peu moins de puissance)

Et voici une bonne introduction à Java internationalisation: http://Java.Sun.com/docs/books/tutorial/i18n/index.html (le " Mise en forme ", section traitant de votre problème, etc.).

1
Mihai Nita

Je suis d'accord avec Laura et SimpleDateFormat qui est le meilleur moyen de gérer les dates en Java. Vous pouvez définir le modèle et les paramètres régionaux. De plus, vous pouvez y jeter un œil article de wikipedia sur la date dans le monde -il n'y a pas tellement de façons différentes de l'utiliser; typiquement USA/Chine/reste du monde -

1
Baztoune