J'apporte la réponse moderne.
java.time et ThreeTenABP
Pour obtenir la date actuelle:
LocalDate today = LocalDate.now(ZoneId.of("America/Hermosillo"));
Cela vous donne un LocalDate
objet, que vous devez utiliser pour conserver une date dans votre programme. UNELocalDate
est une date sans heure de la journée.
Uniquement lorsque vous devez afficher la date à un utilisateur, formatez-la dans une chaîne adaptée aux paramètres régionaux de l'utilisateur:
DateTimeFormatter userFormatter
= DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
System.out.println(today.format(userFormatter));
Lorsque j'ai exécuté cet extrait aujourd'hui dans les paramètres régionaux anglais américains, la sortie était:
13 juillet 2019
Si vous voulez qu'il soit plus court, spécifiez FormatStyle.MEDIUM
ou même FormatStyle.SHORT
. DateTimeFormatter.ofLocalizedDate
utilise les paramètres régionaux de mise en forme par défaut, le fait est donc qu'il donnera une sortie adaptée à ces paramètres régionaux, différente pour différents paramètres régionaux.
Si votre utilisateur a des exigences très particulières pour le format de sortie, utilisez une chaîne de modèle de format:
DateTimeFormatter userFormatter = DateTimeFormatter.ofPattern(
"d-MMM-u", Locale.forLanguageTag("ar-AE"));
13-يول -2019
J'utilise et je recommande java.time, l'API de date et d'heure Java moderne. DateFormat
, SimpleDateFormat
, Date
Et Calendar
utilisé dans la question et / ou plusieurs des autres réponses, sont mal conçus et dépassée depuis longtemps. Et java.time est tellement plus agréable à utiliser.
Question: Puis-je utiliser java.time sur Android?
Oui, java.time fonctionne bien sur les appareils Android plus anciens et plus récents. Il nécessite juste au moins Java 6 .
- Dans Java 8 et versions ultérieures et sur les appareils Android plus récents (à partir du niveau d'API 26), l'API moderne est intégrée.
- Dans Java 6 et 7, obtenez le ThreeTen Backport, le backport des classes modernes (ThreeTen pour JSR 310; voir les liens en bas).
- Sur Android (plus ancien), utilisez l'édition Android de ThreeTen Backport. Il s'appelle ThreeTenABP. Et assurez-vous d'importer les classes de date et d'heure à partir des
org.threeten.bp
sous-packages.
Liens
DateFormat
classe était correcte lorsque cette question a été posée en 2011, cette classe et sa sousSimpleDateFormat
- classe étaient toujours gênantes et sont maintenant obsolètes depuis longtemps. Je vous recommande de ne pas les utiliser et de regarder plutôt dans java.time, l'API de date et d'heure Java moderne .