Video: Understanding Time Zones 2024
Sama seperti anda tidak boleh menggunakan pengendali perbandingan built-in Java dengan tarikh, anda juga tidak boleh menggunakan pengendali matematik terbina dalam. Sebaliknya, anda boleh melakukan penambahan dan penolakan pada tarikh menggunakan pelbagai kaedah
plus
dan
tolak
, dan anda boleh menentukan perbezaan antara dua tarikh dengan menggunakan kaedah
hingga
.
Fakta penting untuk dipertimbangkan apabila melakukan pengiraan tarikh dan masa ialah objek Tarikh-waktu tidak berubah. Ini bermakna bahawa sebaik sahaja anda membuat objek Tarikh-Masa, anda tidak boleh mengubah nilainya. Apabila anda melakukan pengiraan pada objek Tarikh-waktu, hasilnya adalah objek Tarikh Masa baru dengan nilai baru.
Kaedah
ditambah
dan
tolak
membolehkan anda menambah pelbagai unit tarikh dan masa ke objek Tarikh-waktu. Terdapat empat varian bagi setiap kelas
LocalDate
, yang membolehkan anda menambah atau menolak tahun, bulan, minggu, dan hari ke objek
LocalDate
. Kod berikut mencetak tarikh semasa, tarikh esok, dan tarikh satu minggu, satu bulan, dan satu tahun dari sekarang:
Sistem. keluar. println ("Today:" + LocalDate. now ());
Sistem. keluar. println ("Besok:" + TempatanDate sekarang (). plusDays (1)); Sistem
. keluar. println ("Minggu depan:" + LocalDate sekarang (). plusWeeks (1)); Sistem
. keluar. println ("Bulan depan:" + LocalDate sekarang (). plusMonths (1)); Sistem
. keluar. println ("Tahun hadapan:" + LocalDate. sekarang (). plusTahun (1));
Untuk menentukan perbezaan antara dua tarikh, gunakan kaedah
hingga
. Ia mengira perbezaan antara tarikh dan tarikh yang diluluskan sebagai parameter pertama, diukur dalam unit yang ditunjukkan oleh parameter kedua. Sebagai contoh, kod berikut menentukan bilangan hari antara 16 Mei 2014 dan 15 Disember 2014:
TarikhTarikh Tarikh1 = TemplatDate. parse ("2014-05-16");
DateDate date2 = LocalDate. parse ("2014-12-15"); Sistem
. keluar. println (tarikh1 hingga (tarikh2, ChronoUnit, HARI));
Beberapa pengiraan tarikh boleh sedikit lebih rumit. Sebagai contoh, pertimbangkan perniagaan yang menyediakan invois pada hari ke-15 setiap bulan. Coretan kod berikut menunjukkan bilangan hari dari tarikh semasa sehingga tarikh penginvoisan seterusnya:
LocalDate hari = LocalDate. sekarang ();
LocalDate invDate = LocalDate. daripada (hari ini. getYear (),
hari ini. getMonthValue (), 15);
jika (hari ini. GetDayOfMonth ()> 15)
invDate = invDate. tambah bulan (1);
hari yang panjangToInvoice = hari ini. sehingga (invDate,
ChronoUnit. HARI); Sistem
. keluar. println (daysToInvoice
+ "sehingga tarikh invois seterusnya."); Contoh ini berfungsi dengan terlebih dahulu mendapatkan tarikh semasa, kemudian membuat objek
LocalDate
baru yang mewakili bulan ke-15 semasa. Kemudian, jika hari semasa bulan lebih besar daripada 15, ia menambah satu bulan pada tarikh invois. Dalam erti kata lain, jika ia adalah 16 atau yang lebih lewat, invois berlaku pada bulan ke-
selepas, bukan pada bulan ini. Kemudian ia menggunakan kaedah hingga
untuk menentukan bilangan hari antara tarikh semasa dan tarikh invois seterusnya.
ChronoUnit
adalah penghitungan yang menentukan pelbagai unit masa yang boleh digunakan dalam pengiraan tarikh dan masa. Nilai yang mungkin adalah:
CENTURIES
HARI
DEKAT
ERAS
FOREVER
HALF-HAYS
JAM
MICROS
MILLENNIA
MILLIS
BULAN
NANOS
SECONDS
WEEKS
TAHUN
Sebagian besar ini jelas, tetapi dua daripadanya agak pelik:
ERA
-
tarikh merujuk kepada Era Bersama (CE, juga dikenali sebagai AD) atau Sebelum Era (SM, juga dikenali sebagai BC).
FOREVER -
mewakili nilai terbesar yang boleh diwakili sebagai tempoh. Malangnya, Jawa tidak akan membiarkan anda hidup selama-lamanya. Kod berikut melemparkan pengecualian:
Hari jadi LocalDate = LocalDate. parse ("1959-05-16);
hari jadi = hari jadi. ditambah (1, ChronoUnit FOREVER);
Perhatikan bahawa
ChronoUni
t berada di
java. masa. pakej
temporal, jadi pastikan anda memasukkan pernyataan berikut di bahagian atas mana-mana program yang menggunakan
ChronoUnit
:
java import. masa. temporal. *;