Menguasai Tanggal & Waktu Java: SimpleDateFormat, Pengambilan Tanggal Saat Ini, dan Perbandingan Tanggal
Tutorial ini mencakup dasar-dasar bekerja dengan tanggal dan waktu di Java, termasuk:
Menampilkan tanggal dan waktu saat ini
Memformat dan mem-parsing tanggal dengan SimpleDateFormat
Membandingkan dua tanggal
Objek Date Java mewakili komponen berikut:
Tahun (2 atau 4 digit)
Bulan (numerik, singkatan tiga huruf, atau nama lengkap)
Hari dalam bulan
Hari dalam minggu (misalnya, Minggu, Senin, Selasa)
Komputer mendukung banyak parameter terkait tanggal tambahan, yang akan kita bahas di bagian-bagian selanjutnya.
Menampilkan Tanggal Saat Ini di Java
Kelas java.util.Date Java menyediakan cara sederhana untuk mendapatkan tanggal dan waktu sistem saat ini. Berikut adalah contoh minimal:
import java.util.Date; class DateExample { public static void main(String[] args) { Date current = new Date(); System.out.println(current.toString()); } }
Keluaran:
Wed Nov 29 06:36:22 UTC 2017
Keluaran menggunakan format toString() default. Untuk menyajikan tanggal dalam tata letak kustom, Anda perlu memformatnya secara eksplisit.
SimpleDateFormat: Parse dan Format Tanggal
Java memformat tanggal menggunakan string pola yang memetakan huruf ke komponen tanggal atau waktu tertentu. Berikut adalah tabel referensi:
Huruf
Komponen Tanggal atau Waktu
Contoh
G
Penentu Era
M
y
Tahun
2018
M
Bulan dalam tahun
Juli, Jul, 07
w
Minggu dalam tahun
27
W
Minggu dalam bulan
2
D
Hari dalam tahun
189
d
Hari dalam bulan
10
F
Hari minggu dalam bulan
2
E
Nama hari dalam minggu
Selasa, Tue
u
Nomor hari minggu (1=Senin … 7=Minggu)
1
a
Penanda AM/PM
PM
H
Jam dalam hari (0‑23)
0
k
Jam dalam hari (1‑24)
24
K
Jam dalam am/pm (0‑11)
0
h
Jam dalam am/pm (1‑12)
12
m
Menit dalam jam
30
s
Detik dalam menit
55
S
Milidetik
978
z
Zona waktu
Pacific Standard Time; PST; GMT-08:00
Z
Offset zona waktu
-0800
X
Zona waktu
-08, -0800, -08:00
Lihat tabel ini kapan pun Anda perlu membangun string format tertentu.
Menggunakan SimpleDateFormat
Kelas SimpleDateFormat memungkinkan Anda menentukan pola untuk memformat atau mem-parsing tanggal. Misalnya:
Format yang diinginkan: 2012.10.23 20:20:45 PST → pola yyyy.MM.dd HH:mm:ss zzz
Format yang diinginkan: 09:30:00 AM 23-May-2012 → pola hh:mm:ss a dd-MMM-yyyy
Tips: Perhatikan kapitalisasi—menggunakan M untuk bulan dan m untuk menit sangat penting.
import java.text.SimpleDateFormat; import java.util.Date; class TestDatesFormat { public static void main(String[] args) { Date now = new Date(); System.out.println(now); String pattern = "hh:mm:ss a dd-MMM-yyyy"; SimpleDateFormat sdf = new SimpleDateFormat(pattern); System.out.println(sdf.format(now)); } }
Keluaran:
Wed Nov 29 06:31:41 UTC 2017 06:31:41 AM 29-Nov-2017
Membandingkan Tanggal
Metode terandalan untuk perbandingan tanggal di Java adalah compareTo(), yang mengembalikan nilai negatif jika tanggal pertama lebih awal, nol jika sama, dan nilai positif jika lebih lama.
import java.text.SimpleDateFormat; import java.text.ParseException; import java.util.Date; class TestDatesCompare { public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); Date date1 = sdf.parse("20-08-1981"); Date date2 = sdf.parse("12-10-2012"); System.out.println("Tanggal1 : " + sdf.format(date1)); System.out.println("Tanggal2 : " + sdf.format(date2)); if (date1.compareTo(date2) > 0) { System.out.println("Tanggal 1 terjadi setelah Tanggal 2"); } else if (date1.compareTo(date2) < 0) { System.out.println("Tanggal 1 terjadi sebelum Tanggal 2"); } else { System.out.println("Keduanya sama"); } } }
Keluaran:
Tanggal1 : 20-08-1981 Tanggal2 : 12-10-2012 Tanggal 1 terjadi sebelum Tanggal 2