Rusia.
Month
.MAY
.getDisplayName(
TextStyle.FULL_STANDALONE ,
new Locale( "ru" , "RU" )
)
май
Bahasa Inggris di Amerika Serikat.
Month
.MAY
.getDisplayName(
TextStyle.FULL_STANDALONE ,
Locale.US
)
Mungkin
Lihat kode ini ditayangkan langsung di IdeOne.com .
ThreeTenABP dan java.time
Inilah jawaban modernnya. Ketika pertanyaan ini diajukan pada tahun 2011, Calendardan GregorianCalendarbiasanya digunakan untuk tanggal dan waktu meskipun desainnya selalu buruk. Itu 8 tahun yang lalu sekarang, dan kelas-kelas itu sudah lama ketinggalan zaman. Dengan asumsi Anda belum menggunakan API level 26, saran saya adalah menggunakan pustaka ThreeTenABP, yang berisi backport java.time yang diadaptasi Android, API tanggal dan waktu Java modern. java.time jauh lebih baik untuk dikerjakan.
Bergantung pada kebutuhan dan situasi Anda, ada dua opsi:
- Penggunaan
Monthdan getDisplayNamemetodenya.
- Gunakan a
DateTimeFormatter.
Gunakan Bulan
Locale desiredLanguage = Locale.ENGLISH;
Month m = Month.MAY;
String monthName = m.getDisplayName(TextStyle.FULL, desiredLanguage);
System.out.println(monthName);
Keluaran dari potongan ini adalah:
Mungkin
Dalam beberapa bahasa, akan membuat perbedaan apakah Anda menggunakan TextStyle.FULLatau TextStyle.FULL_STANDALONE. Anda harus melihat, mungkin memeriksa dengan pengguna Anda, mana dari keduanya yang cocok dengan konteks Anda.
Gunakan DateTimeFormatter
Jika Anda punya kencan dengan atau tanpa waktu, menurut saya cara yang DateTimeFormatterlebih praktis. Sebagai contoh:
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);
Saya menunjukkan penggunaan a ZonedDateTime, pengganti terdekat untuk Calendarkelas lama . Kode di atas akan bekerja untuk LocalDate, sebuah LocalDateTime, MonthDay, OffsetDateTimedan YearMonthjuga.
Bagaimana jika Anda mendapatkan Calendardari API lama yang belum diupgrade ke java.time? Ubah menjadi a ZonedDateTimedan lanjutkan seperti di atas:
Calendar c = getCalendarFromLegacyApi();
ZonedDateTime dateTime = DateTimeUtils.toZonedDateTime(c);
Sisanya sama seperti sebelumnya.
Pertanyaan: Bukankah java.time memerlukan Android API level 26?
java.time bekerja dengan baik di perangkat Android lama dan lebih baru. Ini hanya membutuhkan setidaknya Java 6 .
- Di Java 8 dan yang lebih baru dan pada perangkat Android yang lebih baru (dari API level 26), API modern sudah ada di dalamnya.
- Di non-Android Java 6 dan 7 dapatkan ThreeTen Backport, backport kelas modern (ThreeTen untuk JSR 310; lihat link di bagian bawah).
- Di Android (lebih lama), gunakan ThreeTen Backport edisi Android. Ini disebut ThreeTenABP. Dan pastikan Anda mengimpor kelas tanggal dan waktu dari
org.threeten.bpdengan subpaket.
Tautan