Russe.
Month
.MAY
.getDisplayName(
TextStyle.FULL_STANDALONE ,
new Locale( "ru" , "RU" )
)
май
Anglais aux États-Unis.
Month
.MAY
.getDisplayName(
TextStyle.FULL_STANDALONE ,
Locale.US
)
Mai
Voir ce code exécuté en direct sur IdeOne.com .
ThreeTenABP et java.time
Voici la réponse moderne. Lorsque cette question a été posée en 2011, Calendar
elle GregorianCalendar
était couramment utilisée pour les dates et heures même si elles étaient toujours mal conçues. Cela fait 8 ans maintenant, et ces classes sont dépassées depuis longtemps. En supposant que vous n'êtes pas encore au niveau de l'API 26, ma suggestion est d'utiliser la bibliothèque ThreeTenABP, qui contient un backport adapté Android de java.time, l'API moderne de date et d'heure Java. java.time est tellement plus agréable à utiliser.
En fonction de vos besoins exacts et de votre situation, il existe deux options:
- Utilisation
Month
et sa getDisplayName
méthode.
- Utilisez un
DateTimeFormatter
.
Utiliser le mois
Locale desiredLanguage = Locale.ENGLISH;
Month m = Month.MAY;
String monthName = m.getDisplayName(TextStyle.FULL, desiredLanguage);
System.out.println(monthName);
La sortie de cet extrait de code est:
Mai
Dans quelques langues, cela fera une différence que vous utilisiez TextStyle.FULL
ou TextStyle.FULL_STANDALONE
. Vous devrez voir, peut-être vérifier avec vos utilisateurs, lequel des deux correspond à votre contexte.
Utilisez un DateTimeFormatter
Si vous avez un rendez-vous avec ou sans heure de la journée, je trouve un rendez-vous DateTimeFormatter
plus pratique. Par exemple:
DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("MMMM", desiredLanguage);
ZonedDateTime dateTime = ZonedDateTime.of(2019, 5, 31, 23, 49, 51, 0, ZoneId.of("America/Araguaina"));
String monthName = dateTime.format(monthFormatter);
Je montre l'utilisation d'un ZonedDateTime
, le remplacement le plus proche de l'ancienne Calendar
classe. Le code ci - dessus fonctionne pour un LocalDate
, un LocalDateTime
, MonthDay
, OffsetDateTime
et YearMonth
aussi.
Que faire si vous avez une Calendar
API héritée qui n'a pas encore été mise à niveau vers java.time? Convertissez en a ZonedDateTime
et procédez comme ci-dessus:
Calendar c = getCalendarFromLegacyApi();
ZonedDateTime dateTime = DateTimeUtils.toZonedDateTime(c);
Le reste est le même qu'avant.
Question: java.time ne nécessite-t-il pas le niveau d'API Android 26?
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 non-Android, 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