Java menyediakan class tanggal yang tersedia dalam java.util package, class ini berisi rangkuman tanggal dan waktu.
Class tanggal mendukung dua konstruktor seperti yang ditunjukkan dibawah ini.
No | Konstruktor dan Deskripsi |
---|---|
1 | Date()
Konstruktor ini menginisialisasi objek dengan tanggal dan waktu.
|
2 | Date(long millisec)
Konstruktor ini menerima argumen yang sama dengan jumlah milidetik yang telah berlalu sejak tengah malam, 1 Januari 1970
|
Dibawah ini adalah metode dari class tanggal (date).
No | Metode dengan Deskripsi |
---|---|
1 | boolean after(Date date)
Mengembalikan nilai true jika memohon objek tanggal berisi tanggal yang kemudian ditentukan berdasarkan tanggal yang telah ditentukan, jika tidak, ia mengembalikan false.
|
2 | boolean before(Date date)
Mengembalikan nilai true jika memohon objek tanggal berisi tanggal yang lebih awal dari yang ditentukan berdasarkan tanggal yang ditentukan, jika tidak, ia mengembalikan false.
|
3 | Objek clone()
Menduplikasi invoking objek Date.
|
4 | int compareTo(Date date)
Membandingkan nilai objek pemohon dengan tanggal. Mengembalikan 0 jika nilai sama. Mengembalikan nilai negatif jika objek pemohon lebih awal dari tanggal. Mengembalikan nilai positif jika objek pemohon adalah paling akhir dari tanggal.
|
5 | int compareTo(Object obj)
Beroperasi identik dengan compareTo(Date) jika obj adalah kelas Tanggal. Jika tidak, ClassCastException akan dilempar.
|
6 | boolean equals (Object tanggal)
Mengembalikan nilai true jika memohon objek Date berisi waktu yang sama dan tanggal seperti yang ditentukan berdasarkan tanggal, jika tidak, ia mengembalikan false.
|
7 | long getTime()
Mengembalikan jumlah milidetik yang telah berlalu sejak 1 Januari 1970.
|
8 | int hashCode()
Mengembalikan kode hash untuk objek pemohon.
|
9 | void setTime(long time)
Mengatur waktu dan tanggal yang ditentukan oleh waktu, yang merupakan waktu yang telah berlalu dalam milidetik dari tengah malam, 1 Januari 1970
|
10 | String toString ()
Mengubah invoking objek Date ke dalam sebuah string dan mengembalikan hasilnya.
|
Mendapatkan Tanggal Dan Waktu Saat Ini
Bukan perkara sulit untuk mendapatkan tanggal dan waktu pada Java. Kita dapat menggunakan objek tanggal sederhana dengan toString(), berikut adalah method untuk mencetak tanggal dan waktu:
import java.util.Date; public class TestTanggal { public static void main(String args[]) { // object tanggal Date date = new Date(); // menampilkan waktu dan tanggal menggunakan toString() System.out.println(date.toString()); } }
Berikut adalah hasil dari kode diatas.
Tue Feb 04 18:08:26 ICT 2016
Membandingkan Tanggal
Terdapat tiga cara untuk membandingkan dua tanggal:
- Kita dapat menggunakan getTime() untuk mendapatkan jumlah milidetik yang telah berlalu sejak tengah malam, 1 Januari 1970, untuk kedua objek dan kemudian membandingkan kedua nilai tersebut.
- Cara kedua yaitu menggunakan method before(), after(), dan equals(). Karena 12 bulan datang sebelum tanggal 18, misalnya new Date(99, 2, 12). before(new Date (99, 2, 18)) akan menghasilkan nilai true.
- Cara terakhir dapat menggunkan compareTo(), yang didefinisikan oleh antarmuka yang dibandingkan dan dilaksanakan oleh tanggal secara otomatis.
Memformat Tanggal Menggunakan SimpleDateFormat
SimpleDateFormat merupakan concrete class untuk memformat dan memparsing tanggal secara lokal-sensitif. SimpleDateFormat memungkinkan kita untuk memulai dengan memilih setiap pola yang ditetapkan pengguna untuk format date-time formatting. Contoh:
Dibawah ini adalah beberapa method yang mendukung dan sangat berguna yang diberikan oleh class GregorianCalendar.
import java.util.*; import java.text.*; public class TestTanggal{ public static void main(String args[]) { Date HariSekarang = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'pada' hh:mm:ss a zzz"); System.out.println("Tanggal dan waktu saat ini: " + ft.format(HariSekarang)); } }Berikut adalah hasil dari kode diatas.
Tanggal dan waktu saat ini: Tue 2016.02.02 pada 06:49:03 PM ICT
Format Kode Sederhana DateFormat
Untuk menentukan format waktu, menggunakan waktu pola string. Dalam pola ini, semua huruf ASCII dicadangkan sebagai huruf pola, yang didefinisikan sebagai berikut:
Karakter | Deskripsi | Contoh |
---|---|---|
G | Era designator | AD |
y | Tahun dalam empat digit | 2001 |
M | Bulan pada tahun | July atau 07 |
d | Hari pada bulan | 10 |
h | Jam AM / PM (1 ~ 12) | 12 |
H | Jam dalam sehari (0 ~ 23) | 22 |
m | Menit pada jam | 30 |
s | detik pada menit | 55 |
S | Milidetik | 234 |
E | Hari dalam seminggu | Selasa |
D | Hari dalam tahun | 360 |
F | Hari dalam seminggu dalam bulan | 2 (second Wed. in July) |
w | Minggu dalam tahun | 40 |
W | Minggu dalam bulan | 1 |
a | AM / PM penanda | PM |
k | Jam dalam sehari (1 ~ 24) | 24 |
K | Jam AM / PM (0 ~ 11) | 10 |
z | Zona waktu | Eastern Standard Time |
' | Tanda Pemisah untuk teks | 'Contoh' |
" | Kutip tunggal | ` |
Memformat Tanggal Menggunakan printf
Memformat tanggal dan waktu dapat dilakukan dengan sangat mudah menggunkan method printf, kita dapat menggunakan format dua huruf, dimulai dengan t dan berakhir pada salah satu huruf seperti pada contoh dibawah ini.
import java.util.Date; public class TestTanggal{ public static void main(String args[]) { // object tanggal Date date = new Date(); // menampilkan tanggal dan waktu menggunakan toString() String str = String.format("Tanggal dan waktu saat ini : %tc", date ); System.out.printf(str); } }
Berikut adalah hasil dari kode diatas.
Tanggal dan waktu saat ini : Tue Feb 02 19:06:01 ICT 2016
Akan sedikit merepotkan jika kita harus menyediakan tanggal beberapa kali untuk memformat setiap bagian. Untuk itu, format string dapat menunjukkan indeks argumen yang akan diformat.
Indeks harus segera mengikuti % dan itu harus diakhiri oleh $. Contoh:
import java.util.Date; public class TestTanggal{ public static void main(String args[]) { // object tanggal Date date = new Date(); // menampilkan tanggal and waktu menggunakan toString() System.out.printf("%1$s %2$tB %2$td, %2$tY", "Tanggal saat ini:", date); } }
Berikut adalah hasil dari kode diatas.
Tanggal saat ini: February 02, 2016
Atau kita dapat menggunakan < flag.Hal ini menunjukkan bahwa argumen yang sama seperti dalam format spesifikasi sebelumnya harus digunakan lagi. Contoh:
import java.util.Date; public class DateDemo { public static void main(String args[]) { // object tanggal Date date = new Date(); // menampilkan tanggal yang telah diformat System.out.printf("%s %tB %<te, %<tY", "Tanggal saat ini:", date); } }
Berikut adalah hasil dari kode diatas.
Tanggal saat ini: February 02, 2016
Karakter Dan Konversi Tanggal Dan Waktu
Karakter | Deskripsi | Contoh |
---|---|---|
c | Tanggal dan waktu lengkap | Mon 4 Mei 2009 09:51:52 CDT |
F | Tanggal ISO 8601 | 2004/02/09 |
D | Tanggal format U.S. (bulan / hari / tahun) | 2004/02/09 |
T | Waktu 24 jam | 18:05:19 |
r | Waktu 12 jam | 06:05:19 |
R | Waktu 24 jam, tidak ada detik | 18:05 |
Y | Tahun empat digit (dengan nol) | 2004 |
y | Dua digit terakhir tahun (dengan nol) | 04 |
C | Dua digit pertama pada tahun (dengan nol) | 20 |
B | Nama bulan penuh | February |
b | Singkatan nama bulan | Feb |
m | Dua digit bulan (dengan nol) | 02 |
d | Hari dua digit (dengan nol) | 03 |
e | Hari dua digit (tanpa nol) | 9 |
A | Nama lengkap hari kerja | Monday |
a | Nama hari disingkat | Mon |
j | Hari tiga digit pada satu tahun (dengan nol) | 069 |
H | Jam dua-digit (dengan nol), antara 00 dan 23 | 18 |
k | Jam dua-digit (tanpa nol), antara 0 dan 23 | 18 |
I | Jam dua-digit (dengan nol), antara 01 dan 12 | 06 |
l | Jam dua-digit (tanpa nol), antara 1 dan 12 | 6 |
M | Menit dua digit (dengan nol) | 05 |
S | Dua digit detik (dengan nol) | 19 |
L | Milidetik tiga digit (dengan nol) | 047 |
N | Nanodetik sembilan digit (dengan nol) | 047000000 |
P | Pagi huruf besar atau penanda sore | PM |
p | Pagi huruf kecil atau penanda sore | pm |
z | RFC 822 numerik offset dari GMT | -0800 |
Z | Zona waktu | PST |
s | Detik sejak 1970/01/01 00:00:00 GMT | 1078884319 |
Q | Milidetik sejak 1970/01/01 00:00:00 GMT | 1078884319047 |
Terdapat class-class lain yang berguna terkait tanggal dan waktu. Untuk lebih jelasnya kita dapat merujuk standar dokumentasi Java.
Parsing String Ke Tanggal
Class SimpleDateFormat memiliki beberapa metode tambahan terutama parse(), yang mencoba untuk mengurai string sesuai dengan format yang tersimpan dalam objek SimpleDateFormat. Contoh:
import java.util.*; import java.text.*; public class DateDemo { public static void main(String args[]) { SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); String input = args.length == 0 ? "1818-11-11" : args[0]; System.out.print(input + " Memparsing sebagai "); Date t; try { t = ft.parse(input); System.out.println(t); } catch (ParseException e) { System.out.println("Tidak dapat diparsing menggunakan " + ft); } } }
Berikut adalah hasil dari kode diatas.
1818-11-11 Memparsing sebagai Wed Nov 11 00:00:00 GMT 1818
Tidur Sementara
Kita dapat tidur untuk setiap periode waktu satu milidetik hingga masa komputer kita. Contoh, program berikut akan tidur selama 4 detik.
import java.util.*; public class TestTidur { public static void main(String args[]) { try { System.out.println(new Date( ) + "\n"); Thread.sleep(5*60*10); System.out.println(new Date( ) + "\n"); } catch (Exception e) { System.out.println("Terdapat exception!"); } } }
Berikut adalah hasil dari kode diatas.
Tue Feb 02 19:40:30 ICT 2016 Tue Feb 02 19:40:34 ICT 2016
Mengukur Waktu Yang Berlalu
Terkadang kita mungkin perlu mengukur titik waktu dalam milidetik. Mari kita tulis ulang contoh diatas sekali lagi.
import java.util.*; public class TestPerbedaan { public static void main(String args[]) { try { long start = System.currentTimeMillis( ); System.out.println(new Date( ) + "\n"); Thread.sleep(5*60*10); System.out.println(new Date( ) + "\n"); long end = System.currentTimeMillis( ); long diff = end - start; System.out.println("Perbedaannya adalah : " + diff); } catch (Exception e) { System.out.println("Terdapat exception!"); } } }
Berikut adalah hasil dari kode diatas.
Wed Feb 03 13:18:00 ICT 2016 Wed Feb 03 13:18:03 ICT 2016 Perbedaannya adalah : 3152
Class GregorianCalendar
GregorianCalendar adalah implementasi konkret dari kelas kalendar yang mengimplementasikan kalendar Gregorian normal dengan yang sudah biasa kita kenal.
getInstance() method kalendar mengembalikan GregorianCalendar yang sudah diinisialisasi dengan tanggal dan waktu lokal default dan zona waktu. GregorianCalendar mendefinisikan dua bidang: AD dan BC yang mewakili dua era yang didefinisikan oleh kalendar Gregorian.
Berikut beberapa konstruktor untuk object GregorianCalendar.
SN | Konstruktor dengan Deskripsi |
---|---|
1 | GregorianCalendar ()
Membangun sebuah GregorianCalendar standar menggunakan waktu saat ini di zona waktu default dengan lokal default.
|
2 | GregorianCalendar (int tahun, int bulan, int tanggal)
Membangun sebuah GregorianCalendar dengan tanggal yang diberikan diatur dalam zona waktu default dengan lokal default.
|
3 | GregorianCalendar (int tahun, int bulan, int tanggal, int jam, int menit)
Membangun sebuah GregorianCalendar dengan tanggal dan waktu tertentu yang ditetapkan untuk zona waktu default dengan lokal default.
|
4 | GregorianCalendar (int tahun, int bulan, int tanggal, int jam, int menit, int detik)
Membangun sebuah GregorianCalendar dengan tanggal dan waktu tertentu yang ditetapkan untuk zona waktu default dengan lokal default.
|
5 | GregorianCalendar (Locale aLocale)
Membangun sebuah GregorianCalendar berdasarkan waktu saat ini di zona waktu default dengan lokal yang diberikan.
|
6 | GregorianCalendar (TimeZone zone)
Membangun sebuah GregorianCalendar berdasarkan waktu saat ini di zona waktu yang diberikan dengan lokal default.
|
7 | GregorianCalendar (TimeZone zone, Locale aLocale)
Membangun sebuah GregorianCalendar berdasarkan waktu saat ini di zona waktu yang diberikan dengan lokal yang diberikan.
|
SN | Metode dengan Deskripsi |
---|---|
1 | void add(int field, int amount)
Menambahkan (ditandatangani) jumlah spesifik waktu ke field waktu yang diberikan, berdasarkan aturan kalender yang ditentukan.
|
2 | protected void computeFields()
Mengkonversi UTC sebagai milidetik untuk nilai bidang waktu.
|
3 | protected void computeTime()
Menggantikan Kalender Mengubah nilai bidang waktu untuk UTC sebagai milidetik.
|
4 | boolean equals(Object obj)
Membandingkan GregorianCalendar yang ditentukan untuk referensi obyek.
|
5 | int get(int field)
Mendapat nilai untuk bidang waktu tertentu.
|
6 | int getActualMaximum(int field)
Mengembalikan nilai maksimum yang bidang ini miliki, mengingat tanggal saat ini.
|
7 | int getActualMinimum(int field)
Mengembalikan nilai minimum yang bidang ini miliki, mengingat tanggal saat ini.
|
8 | int getGreatestMinimum(int field)
Mengembalikan nilai tertinggi minimum untuk bidang tertentu jika bervariasi.
|
9 | Date getGregorianChange()
Mendapat tanggal perubahan Kalender Gregorian.
|
10 | int getLeastMaximum(int field)
Mengembalikan nilai terendah maksimum untuk bidang tertentu jika bervariasi.
|
11 | int getMaximum(int field)
Mengembalikan nilai maksimum untuk bidang tertentu.
|
12 | Date getTime()
Mendapat Kalender saat ini.
|
13 | long getTimeInMillis()
Mendapatkan waktu saat ini dari Kalender sebagai long.
|
14 | TimeZone getTimeZone()
Mendapat zona waktu.
|
15 | int getMinimum(int field)
Mengembalikan nilai minimum untuk bidang tertentu.
|
16 | int hashCode()
Override kode hash.
|
17 | boolean isLeapYear(int tahun)
Menentukan apakah tahun tertentu adalah tahun kabisat.
|
18 | void roll(int field, boolean up)
Menambahkan atau mengurangi (atas / bawah) satu unit waktu di field waktu yang diberikan tanpa mengubah bidang yang lebih besar.
|
19 | void set(int field, nilai int)
Menetapkan bidang waktu dengan nilai yang diberikan.
|
20 | void set(int tahun, int bulan, int tanggal)
Menetapkan nilai untuk bidang tahun, bulan, dan tanggal.
|
21 | void set(int tahun, int bulan, int tanggal, int jam, int menit)
Menetapkan nilai untuk bidang tahun, bulan, tanggal, jam, dan menit.
|
22 | void set(int tahun, int bulan, int tanggal, int jam, int menit, int detik)
Menetapkan nilai untuk bidang tahun, bulan, tanggal, jam, menit, dan detik.
|
23 | void setGregorianChange(Date date)
Menetapkan tanggal perubahan GregorianCalendar.
|
24 | void setTime(Date date)
Set saat ini Kalender saat ini dengan yang diberikan Tanggal.
|
25 | void setTimeInMillis(long millis)
Set saat ini Kalender saat ini dari nilai lama diberikan.
|
26 | void setTimeZone(TimeZone value)
Menetapkan zona waktu dengan nilai zona waktu yang diberikan.
|
27 | String toString()
Kembali representasi string dari kalender ini.
|
Contoh:
Bukalah NetBeans kalian buatlah class baru bernama GregorianCalendarTest lalu tuliskan kode berikut.
import java.util.*; public class GregorianCalendarDemo { public static void main(String args[]) { String months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; int year; // Membuat Gregorian calendar dan diinisialisasi // dengan waktu dan tanggal saat ini // default lokal dan zona waktu. GregorianCalendar gcalendar = new GregorianCalendar(); // Menampilkan informasi tanggal dan waktu saat ini. System.out.print("Tanggal: "); System.out.print(months[gcalendar.get(Calendar.MONTH)]); System.out.print(" " + gcalendar.get(Calendar.DATE) + " "); System.out.println(year = gcalendar.get(Calendar.YEAR)); System.out.print("Waktu: "); System.out.print(gcalendar.get(Calendar.HOUR) + ":"); System.out.print(gcalendar.get(Calendar.MINUTE) + ":"); System.out.println(gcalendar.get(Calendar.SECOND)); // Menguji jika tahun ini adalah tahun kabisat. if(gcalendar.isLeapYear(year)) { System.out.println("Tahun kabisat"); } else { System.out.println("Bukan tahun kabisat"); } } }Berikut adalah hasil dari kode diatas.
Tanggal: Feb 4 2016 Waktu: 9:32:27 Tahun kabisat+Java Programming Tutorials +NetBeans
Maaf mas mau tanya, M besar itu untuk month(bulan), sedangkan m kecil untuk minutes(menit) bukan yah?
ReplyDeleteIyaa mas bro betul sekali, diatas juga udh ditulis kok hehe 😁😁😁
DeleteMas kalo mau ganti bahasa tanggalnya gmn? kyk Wednesday jadi Rabu gitu..
ReplyDeleteMas, saya mau buat app notifikasi hitung mundur jatuh tempo, misalkan tgl awal 19/3/19 lalu tgl jatuh tempo 30/3/19 ada selisih 11 hari. saya mau buat countdown 11 hari ini tapi mengacu pd kalender di komputer, jadi di tgl 20/3/19 di komputer nanti notifnya jatuh tempo 10 hari, tgl 21/3/19 notifnya jatuh tempo 9 hari dst. tolong dibantu gimana menghubungkan program netbeans tsb dengan tanggal di komputer. trims
ReplyDeletewoow
ReplyDeleteMenarik, kebetulan blog saya juga membahas hal yang serupa. Seperti Cara Menampilkan Tanggal dan Waktu (saat ini) Dengan Menggunakan JavaScript
Delete