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, Calendar
dan GregorianCalendar
biasanya 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
Month
dan getDisplayName
metodenya.
- 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.FULL
atau 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 DateTimeFormatter
lebih 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 Calendar
kelas lama . Kode di atas akan bekerja untuk LocalDate
, sebuah LocalDateTime
, MonthDay
, OffsetDateTime
dan YearMonth
juga.
Bagaimana jika Anda mendapatkan Calendar
dari API lama yang belum diupgrade ke java.time? Ubah menjadi a ZonedDateTime
dan 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.bp
dengan subpaket.
Tautan