1. Beralih dari Date
kelas ke Calendar
kelas
Pemrogram menyukai Date
kelas ini karena kesederhanaannya dan dukungannya untuk standar Unix, tetapi seperti yang Anda ketahui, setiap mawar memiliki duri.
Pemrogram menginginkan Date
kelas "pintar". Dan mereka mendapatkan apa yang mereka inginkan dalam bentuk kelas Calendar
. Itu disusun sebagai cara untuk tidak hanya menyimpan tanggal, tetapi juga untuk melakukan operasi yang sulit dengan tanggal.
Nama lengkap kelasnya Calendar
adalah java.util.Calendar. Jangan lupa untuk menambahkannya ke import statement jika Anda memutuskan untuk menggunakannya dalam kode Anda.
Anda dapat membuat Calendar
objek dengan perintah ini:
Calendar date = Calendar.getInstance();
Metode statis getInstance()
kelas Calendar
membuat Calendar
objek yang diinisialisasi dengan tanggal saat ini. Kalender yang Anda inginkan akan dibuat berdasarkan pengaturan komputer yang menjalankan program.
Atau lebih tepatnya, kalender yang Anda dapatkan... Itu karena manusia di Bumi tidak terbatas pada satu kalender. Sebaliknya, mereka menggunakan banyak. Dan hampir setiap dari mereka dikaitkan dengan beberapa agama atau negara. Kelas Calendar
mendukung 3 di antaranya:
Kalender | Keterangan |
---|---|
Kalender Gregorian | Kalender Masehi Masehi |
Kalender Buddhis | kalender Buddha |
Kalender Kekaisaran Jepang | Kalender kekaisaran Jepang |
Namun ada juga kalender Cina dan Arab. Pada dasarnya, bekerja dengan waktu tidak semudah kelihatannya.
Dalam penanggalan Tionghoa, tahun resminya adalah 4716 pada saat penulisan pelajaran ini. Dan menurut penanggalan Islam, tahunnya adalah 1398. Selamat datang di dunia besar sobat programmer.
2. Membuat objek kalender
Kami akan menggunakan kalender Gregorian, karena ini yang paling umum di dunia. Setidaknya sampai China membeli Oracle dan menjadikan kalender China sebagai yang utama.
Anda dapat membuat objek kalender dengan tanggal apa pun menggunakan pernyataan seperti ini:
Calendar date = new GregorianCalendar(year, month, day);
Ya, Anda harus menulis GregorianCalendar
setiap saat. Alih-alih Calendar
, Anda juga dapat menulis GregorianCalendar
— itu juga akan berhasil. Tapi menulis saja Calendar
lebih singkat.
Tahun harus ditulis lengkap, misal tidak bisa tulis 19 malah 2019. Bulan tetap angka dari nol. Tapi seperti sebelumnya, hari dalam sebulan tidak dihitung dari nol. Nerd!
Untuk menyetel waktu dan tanggal, Anda harus memasukkan waktu sebagai argumen tambahan:
... = new GregorianCalendar(year, month, day, hours, minutes, seconds);
Anda bahkan dapat mengirimkan dalam milidetik jika diperlukan. Mereka adalah parameter setelah jumlah detik.
3. Menampilkan objek kalender di layar
Jika Anda hanya mencetak objek kalender di layar, Anda tidak akan terlalu senang dengan hasilnya.
Kode |
---|
|
Keluaran konsol |
|
Hal yang perlu diingat di sini adalah kalender adalah kalender, bukan tanggal : ia memiliki semua jenis pengaturan yang semuanya akan ditampilkan di layar.
Sebaiknya gunakan SimpleDateFormat
objek untuk menampilkan kalender, tetapi sampai kita mempelajarinya, Anda dapat menggunakan life hack ini.
Date date = calendar.getTime();
Objek Calendar
dapat dengan mudah diubah menjadi Date
objek, dan Anda sudah tahu cara menampilkan Date
objek. Anda dapat menggunakan kode seperti ini untuk mengonversi Calendar
objek menjadi Date
:
Menggunakan getTime()
metode:
Kode | Keluaran konsol |
---|---|
|
|
Itu masalah yang sangat berbeda, bukan?
4. Bekerja dengan elemen kencan
Untuk mendapatkan elemen tertentu dari suatu tanggal (misalnya tahun, bulan, ...), kelas Calendar
memiliki get()
metode. Ini adalah metode tunggal, tetapi memiliki parameter:
int month = calendar.get(Calendar.MONTH);
Di mana calendar
variabel Calendar
, dan MONTH
merupakan bidang konstanta kelas Calendar
.
Anda meneruskan salah satu Calendar
bidang konstanta kelas sebagai argumen ke get
metode, dan Anda mendapatkan nilai yang diinginkan sebagai hasilnya.
Contoh
Kode | Keterangan |
---|---|
|
era (sebelum atau sesudah era umum) tahun bulan hari bulan hari minggu jam menit detik |
Untuk mengubah elemen tanggal, gunakan set
metode:
calendar.set(Calendar.MONTH, value);
Di mana calendar
variabel Calendar
, dan MONTH
merupakan bidang konstanta kelas Calendar
.
Saat bekerja dengan set
metode, Anda meneruskan salah satu Calendar
bidang konstanta kelas sebagai argumen pertama, dan nilai baru sebagai argumen kedua.
Contoh
Kode | Keterangan |
---|---|
|
tahun = 2019 bulan = Juli (dinomori dari 0) hari ke 4 jam menit detik |
5. Konstanta Calendar
kelas
Bidang konstanta kelas Calendar
tidak terbatas pada bidang penamaan elemen tanggal. Tampaknya ada bidang untuk setiap kesempatan.
Calendar date = new GregorianCalendar(2019, Calendar.JANUARY, 31);
Misalnya, ada bidang konstan untuk merujuk ke bulan:
Dan juga hari dalam seminggu:
Calendar calendar = new GregorianCalendar(2019, Calendar.JANUARY, 31);
if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY)
{
System.out.println("It's Friday");
}
Kami tidak akan mencantumkan semuanya. Kami hanya tidak ingin Anda terkejut jika melihat konstanta seperti ini dalam kode.
Menggunakan konstanta membuat kode lebih mudah dibaca, itulah sebabnya pemrogram menggunakannya. Dan bulan diberi nomor dari nol juga untuk meningkatkan keterbacaan. Atau tidak.
6. Mengubah tanggal pada suatu Calendar
objek
Kelas Calendar
memiliki metode yang memungkinkan Anda menjalankan kencan dengan cara yang lebih cerdas. Misalnya, Anda dapat menambahkan satu tahun, satu bulan, atau beberapa hari ke sebuah tanggal. Atau singkirkan mereka. Metode ini disebut add()
. Bekerja dengannya terlihat seperti ini:
calendar.add(Calendar.MONTH, value);
Di mana calendar
variabel Calendar
, dan MONTH
merupakan bidang konstanta kelas Calendar
.
Saat bekerja dengan add
metode, Anda meneruskan salah satu Calendar
bidang konstanta kelas sebagai argumen pertama, dan sebagai argumen kedua — nilai baru yang akan ditambahkan.
Ini adalah metode cerdas lainnya. Mari kita lihat seberapa pintar itu:
Kode |
---|
|
Keluaran konsol |
|
Metode ini memahami bahwa hanya ada 28 hari di bulan Februari 2019, sehingga tanggal yang dihasilkan adalah 1 Maret.
Sekarang mari kita ambil 2 bulan! Apa yang harus kita dapatkan? 27 Desember 2018! Mari kita periksa sekarang.
Untuk melakukan operasi yang menghasilkan tanggal lebih awal, Anda harus memberikan nilai negatif ke metode add()
:
Kode |
---|
|
Keluaran konsol |
|
Berhasil!
Metode ini memperhitungkan panjang bulan yang berbeda serta tahun kabisat. Semua dalam semua, metode yang bagus. Persis seperti yang dibutuhkan sebagian besar programmer yang bekerja dengan tanggal.
7. Elemen bergulir dari sebuah kencan
Namun terkadang ada situasi ketika kita tidak menginginkan perilaku cerdas ini, misalnya Anda ingin melakukan sesuatu pada satu bagian tanggal tanpa mengubah bagian lainnya.
Kelas Calendar
memiliki metode khusus roll()
untuk ini. Tanda tangannya sama seperti add()
metodenya, tetapi metode ini hanya mengubah satu elemen tanggal, sedangkan sisanya tidak berubah.
Contoh:
Kode |
---|
|
Keluaran konsol |
|
Kami mengubah bulan, tetapi tahun dan tanggal tetap tidak berubah.
GO TO FULL VERSION