Saya memberikan jawaban modern.
java.time dan ThreeTenABP
Untuk mendapatkan tanggal saat ini:
LocalDate today = LocalDate.now(ZoneId.of("America/Hermosillo"));
Ini memberi Anda LocalDateobjek, yang harus Anda gunakan untuk menjaga tanggal dalam program Anda. SEBUAHLocalDate adalah tanggal tanpa waktu.
Hanya ketika Anda perlu menampilkan tanggal ke pengguna, format menjadi string yang cocok untuk lokal pengguna:
DateTimeFormatter userFormatter
= DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
System.out.println(today.format(userFormatter));
Ketika saya menjalankan cuplikan ini hari ini di lokal Bahasa Inggris AS, hasilnya adalah:
13 Juli 2019
Jika Anda menginginkannya lebih pendek, tentukan FormatStyle.MEDIUMatau bahkan FormatStyle.SHORT. DateTimeFormatter.ofLocalizedDatemenggunakan lokal pemformatan default, jadi intinya adalah bahwa ia akan memberikan output yang cocok untuk lokal itu, berbeda untuk lokal yang berbeda.
Jika pengguna Anda memiliki persyaratan yang sangat khusus untuk format output, gunakan string pola format:
DateTimeFormatter userFormatter = DateTimeFormatter.ofPattern(
"d-MMM-u", Locale.forLanguageTag("ar-AE"));
13-يول -2019
Saya menggunakan dan merekomendasikan java.time, API tanggal dan waktu Java modern. DateFormat, SimpleDateFormat, DateDan Calendardigunakan dalam pertanyaan dan / atau banyak jawaban yang lain, dirancang dengan buruk dan lama usang. Dan java.time jauh lebih baik untuk digunakan.
Pertanyaan: Bisakah saya menggunakan java.time di Android?
Ya, java.time bekerja dengan baik pada perangkat Android yang lebih lama dan lebih baru. Itu hanya membutuhkan setidaknya Java 6 .
- Di Java 8 dan yang lebih baru dan di perangkat Android yang lebih baru (dari API level 26), API modern sudah ada di dalamnya.
- Di Java 6 dan 7 dapatkan ThreeTen Backport, backport dari kelas modern (ThreeTen untuk JSR 310; lihat tautan di bagian bawah).
- Pada (yang lebih tua) Android menggunakan ThreeTen Backport edisi Android. Itu disebut ThreeTenABP. Dan pastikan Anda mengimpor kelas tanggal dan waktu dari
org.threeten.bpdengan subpackages.
Tautan
DateFormatkelas tidak masalah ketika pertanyaan ini diajukan pada tahun 2011, kelas itu dan subkelasnyaSimpleDateFormatselalu menyusahkan dan sekarang sudah lama usang. Saya sarankan Anda tidak menggunakannya dan sebaliknya melihat ke java.time, API tanggal dan waktu Java modern .