Russo.
Month
.MAY
.getDisplayName(
TextStyle.FULL_STANDALONE ,
new Locale( "ru" , "RU" )
)
май
Inglês nos Estados Unidos.
Month
.MAY
.getDisplayName(
TextStyle.FULL_STANDALONE ,
Locale.US
)
Maio
Veja este código executado ao vivo em IdeOne.com .
ThreeTenABP e java.time
Aqui está a resposta moderna. Quando esta pergunta foi feita em 2011, Calendar
eGregorianCalendar
era comumente usada para datas e horas, embora fossem sempre mal elaborados. Isso foi há 8 anos, e essas aulas estão muito desatualizadas. Supondo que você ainda não esteja no nível de API 26, minha sugestão é usar a biblioteca ThreeTenABP, que contém um backport adaptado para Android de java.time, a moderna API Java de data e hora. java.time é muito mais agradável de trabalhar.
Dependendo de suas necessidades e situação exatas, há duas opções:
- Uso
Month
e seu getDisplayName
método.
- Use um
DateTimeFormatter
.
Mês de uso
Locale desiredLanguage = Locale.ENGLISH;
Month m = Month.MAY;
String monthName = m.getDisplayName(TextStyle.FULL, desiredLanguage);
System.out.println(monthName);
A saída deste snippet é:
Maio
Em alguns idiomas, fará diferença se você usar TextStyle.FULL
ou TextStyle.FULL_STANDALONE
. Você terá que ver, talvez verificar com seus usuários, qual dos dois se encaixa em seu contexto.
Use um DateTimeFormatter
Se você tem um encontro com ou sem hora do dia, procuro um DateTimeFormatter
mais prático. Por exemplo:
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);
Estou mostrando o uso de um ZonedDateTime
, o substituto mais próximo para a Calendar
classe antiga . O código acima irá trabalhar para um LocalDate
, um LocalDateTime
, MonthDay
, OffsetDateTime
e um YearMonth
também.
E se você Calendar
obtiver um de uma API legada ainda não atualizada para java.time? Converta para a ZonedDateTime
e proceda como acima:
Calendar c = getCalendarFromLegacyApi();
ZonedDateTime dateTime = DateTimeUtils.toZonedDateTime(c);
O resto é o mesmo de antes.
Pergunta: java.time não requer Android API nível 26?
java.time funciona bem em dispositivos Android mais antigos e mais recentes. Requer apenas pelo menos Java 6 .
- No Java 8 e posterior e em dispositivos Android mais recentes (da API de nível 26), a API moderna vem embutida.
- Em Java 6 e 7 não Android, obtenha o Backport ThreeTen, o backport das classes modernas (ThreeTen para JSR 310; consulte os links na parte inferior).
- No Android (mais antigo), use a edição Android do ThreeTen Backport. É chamado de ThreeTenABP. E certifique-se de importar as classes de data e hora
org.threeten.bp
com subpacotes.
Links