Ruso.
Month
.MAY
.getDisplayName(
TextStyle.FULL_STANDALONE ,
new Locale( "ru" , "RU" )
)
май
Inglés en los Estados Unidos.
Month
.MAY
.getDisplayName(
TextStyle.FULL_STANDALONE ,
Locale.US
)
Mayo
Vea este código en vivo en IdeOne.com .
ThreeTenABP y java.time
Aquí está la respuesta moderna. Cuando esta pregunta se hizo en 2011, Calendar
y GregorianCalendar
se utiliza comúnmente para fechas y horas a pesar de que siempre estaban mal diseñados. Eso es hace ahora 8 años, y esas clases están desactualizadas desde hace mucho tiempo. Suponiendo que aún no está en el nivel de API 26, mi sugerencia es usar la biblioteca ThreeTenABP, que contiene un backport adaptado a Android de java.time, la API moderna de fecha y hora de Java. java.time es mucho más agradable para trabajar.
Dependiendo de sus necesidades y situación exactas, hay dos opciones:
- Uso
Month
y su getDisplayName
método.
- Utilice un
DateTimeFormatter
.
Mes de uso
Locale desiredLanguage = Locale.ENGLISH;
Month m = Month.MAY;
String monthName = m.getDisplayName(TextStyle.FULL, desiredLanguage);
System.out.println(monthName);
El resultado de este fragmento es:
Mayo
En algunos idiomas marcará la diferencia si usa TextStyle.FULL
o TextStyle.FULL_STANDALONE
. Tendrá que ver, tal vez consultar con sus usuarios, cuál de los dos encaja en su contexto.
Utilice un DateTimeFormatter
Si tienes una cita con o sin hora del día, encuentro una DateTimeFormatter
más práctica. Por ejemplo:
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);
Estoy mostrando el uso de a ZonedDateTime
, el reemplazo más cercano a la Calendar
clase anterior. El código anterior funcionará durante un LocalDate
, una LocalDateTime
, MonthDay
, OffsetDateTime
y una YearMonth
también.
¿Qué Calendar
sucede si obtiene una API heredada que aún no se actualizó a java.time? Convierta a ZonedDateTime
ay proceda como arriba:
Calendar c = getCalendarFromLegacyApi();
ZonedDateTime dateTime = DateTimeUtils.toZonedDateTime(c);
El resto es igual que antes.
Pregunta: ¿Java.time no requiere el nivel 26 de API de Android?
java.time funciona bien tanto en dispositivos Android antiguos como nuevos. Solo requiere al menos Java 6 .
- En Java 8 y versiones posteriores y en los dispositivos Android más nuevos (desde el nivel de API 26), la API moderna viene incorporada.
- En Java 6 y 7 que no son de Android, obtenga ThreeTen Backport, el backport de las clases modernas (ThreeTen para JSR 310; consulte los enlaces en la parte inferior).
- En Android (más antiguo), use la edición de Android de ThreeTen Backport. Se llama ThreeTenABP. Y asegúrese de importar las clases de fecha y hora desde
org.threeten.bp
con subpaquetes.
Enlaces