Russo.
Month
.MAY
.getDisplayName(
TextStyle.FULL_STANDALONE ,
new Locale( "ru" , "RU" )
)
май
Inglese negli Stati Uniti.
Month
.MAY
.getDisplayName(
TextStyle.FULL_STANDALONE ,
Locale.US
)
Maggio
Guarda questo codice eseguito dal vivo su IdeOne.com .
ThreeTenABP e java.time
Ecco la risposta moderna. Quando questa domanda è stata posta nel 2011, Calendar
eGregorianCalendar
sono stati comunemente usato per date e orari, anche se erano sempre mal progettati. Sono passati 8 anni e quelle lezioni sono obsolete da tempo. Supponendo che tu non sia ancora al livello API 26, il mio suggerimento è di utilizzare la libreria ThreeTenABP, che contiene un backport adattato per Android di java.time, la moderna API di data e ora Java. java.time è molto più bello con cui lavorare.
A seconda delle esigenze e della situazione esatte, ci sono due opzioni:
- Uso
Month
e il suo getDisplayName
metodo.
- Usa un file
DateTimeFormatter
.
Usa mese
Locale desiredLanguage = Locale.ENGLISH;
Month m = Month.MAY;
String monthName = m.getDisplayName(TextStyle.FULL, desiredLanguage);
System.out.println(monthName);
L'output di questo snippet è:
Maggio
In alcune lingue farà la differenza se usi TextStyle.FULL
o TextStyle.FULL_STANDALONE
. Dovrai vedere, magari verificare con i tuoi utenti, quale dei due si adatta al tuo contesto.
Usa un DateTimeFormatter
Se hai un appuntamento con o senza ora del giorno, trovo una DateTimeFormatter
più pratica. Per esempio:
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);
Sto mostrando l'uso di a ZonedDateTime
, il sostituto più vicino alla vecchia Calendar
classe. Il codice qui sopra lavorare per una LocalDate
, una LocalDateTime
, MonthDay
, OffsetDateTime
e YearMonth
anche.
Cosa succede se hai ottenuto Calendar
da un'API legacy non ancora aggiornata a java.time? Converti in a ZonedDateTime
e procedi come sopra:
Calendar c = getCalendarFromLegacyApi();
ZonedDateTime dateTime = DateTimeUtils.toZonedDateTime(c);
Il resto è lo stesso di prima.
Domanda: java.time non richiede il livello API Android 26?
java.time funziona bene sia sui dispositivi Android più vecchi che su quelli più recenti. Richiede solo almeno Java 6 .
- In Java 8 e versioni successive e sui dispositivi Android più recenti (dal livello API 26) l'API moderna è integrata.
- In Java 6 e 7 non Android ottieni il ThreeTen Backport, il backport delle classi moderne (ThreeTen per JSR 310; vedere i collegamenti in fondo).
- Su Android (meno recenti) utilizzare l'edizione Android di ThreeTen Backport. Si chiama ThreeTenABP. E assicurati di importare le classi di data e ora da
org.threeten.bp
con sottopacchetti.
Collegamenti