Saya memberikan jawaban modern.
java.time dan ThreeTenABP
Untuk mendapatkan tanggal saat ini:
LocalDate today = LocalDate.now(ZoneId.of("America/Hermosillo"));
Ini memberi Anda LocalDate
objek, 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.MEDIUM
atau bahkan FormatStyle.SHORT
. DateTimeFormatter.ofLocalizedDate
menggunakan 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
, Date
Dan Calendar
digunakan 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.bp
dengan subpackages.
Tautan
DateFormat
kelas tidak masalah ketika pertanyaan ini diajukan pada tahun 2011, kelas itu dan subkelasnyaSimpleDateFormat
selalu menyusahkan dan sekarang sudah lama usang. Saya sarankan Anda tidak menggunakannya dan sebaliknya melihat ke java.time, API tanggal dan waktu Java modern .