Terdapat pelbagai cara untuk membandingkan tarikh Java. Secara dalaman, tarikh dinyatakan sebagai titik (panjang) waktu - jumlah milisaat yang telah berlalu sejak 1 Januari 1970. Di Jawa, Tarikh adalah objek, yang bermaksud merangkumi pelbagai kaedah untuk perbandingan. Sebarang kaedah membandingkan dua tarikh pada asasnya akan membandingkan masa tarikh.
Langkah-langkah
Kaedah 1 dari 4: Menggunakan membandingkanTo
Langkah 1. Gunakan membandingkanTo
Tarikh dilaksanakan Sebanding dan dua tarikh dapat dibandingkan secara langsung dengan kaedah membandingkanTo. Sekiranya tarikh untuk titik masa yang sama, kaedah mengembalikan sifar. Sekiranya tarikh yang dibandingkan adalah sebelum argumen tarikh, nilai kurang dari sifar dikembalikan. Sekiranya tarikh yang dibandingkan adalah selepas argumen tarikh, nilai yang lebih besar daripada sifar dikembalikan. Sekiranya tarikhnya sama, nilai 0 dikembalikan.
Langkah 2. Buat objek tarikh
Anda perlu membuat setiap objek tarikh sebelum dapat membandingkannya. Salah satu cara untuk melakukannya adalah dengan menggunakan kelas SimpleDateFormat. Ini memungkinkan kemasukan nilai tarikh ke objek tarikh dengan mudah.
SimpleDateFormat sdf = SimpleDateFormat baru ("yyyy-MM-dd"); // Untuk menyatakan nilai dalam objek tarikh baru. gunakan format tarikh yang sama semasa membuat tarikh Tarikh tarikh1 = sdf.parse ("1995-02-23"); // tarikh1 ialah 23 Februari 1995 Tarikh tarikh2 = sdf.parse ("2001-10-31"); // tarikh2 ialah 31 Oktober 2001 Tarikh tarikh3 = sdf.parse ("1995-02-23"); // tarikh3 ialah 23 Februari 1995
Langkah 3. Bandingkan objek tarikh
Kod di bawah akan menunjukkan setiap kes - kurang daripada, sama, dan lebih besar daripada.
date1.compareTo (tarikh2); // tarikh1 <tarikh2, mengembalikan kurang dari 0 tarikh2.compareTo (tarikh1); // tarikh2> tarikh1, pulangan lebih besar daripada 0 tarikh1.compareTo (tarikh3); // date1 = date3, jadi akan mencetak 0 untuk konsol
Kaedah 2 dari 4: Menggunakan Sama, Selepas, dan Sebelum
Langkah 1. Gunakan sama, selepas dan sebelum
Tarikh boleh dibandingkan dengan kaedah yang sama, selepas dan sebelum. Sekiranya dua tarikh untuk titik masa yang sama, kaedah sama akan kembali benar. Contohnya akan menggunakan tarikh yang dibuat sebelumnya dari kaedah membandingkanTo.
Langkah 2. Bandingkan menggunakan kaedah sebelumnya
Kod di bawah menunjukkan kes yang benar dan salah. Sekiranya tarikh1 sebelum tarikh2, sebelum kembali benar. Sekiranya tidak, sebelum kembali palsu.
System.out.print (tarikh1. Sebelum (tarikh2)); // mencetak benar System.out.print (date2.before (date2)); // cetakan palsu
Langkah 3. Bandingkan menggunakan kaedah selepas
Kod di bawah menunjukkan kes yang benar dan salah. Sekiranya tarikh2 adalah selepas tarikh1, selepas kembali benar. Sekiranya tidak, selepas kembali palsu.
System.out.print (date2.after (date1)); // mencetak benar System.out.print (date1.after (date2)); // mencetak palsu
Langkah 4. Bandingkan menggunakan kaedah sama
Kod di bawah menunjukkan kes yang benar dan salah. Sekiranya tarikhnya sama, pulangan sama dengan benar. Sekiranya tidak, pulangan sama dengan palsu.
System.out.print (date1.equals (date3)); // mencetak benar System.out.print (date1.equals (date2)); // mencetak palsu
Kaedah 3 dari 4: Menggunakan Kelas Kalendar
Langkah 1. Gunakan kalendar
Kelas kalendar juga mempunyai kaedah membandingkanTo, sama, selepas dan sebelum yang berfungsi dengan cara yang sama seperti yang dijelaskan di atas untuk kelas tarikh. Oleh itu, jika maklumat tarikh disimpan dalam kalendar, tidak perlu mengekstrak tarikh hanya untuk melakukan perbandingan.
Langkah 2. Buat contoh Kalendar
Untuk menggunakan kaedah Kalendar, anda memerlukan beberapa contoh Kalendar. Nasib baik, anda boleh merebut masa dari contoh Tarikh yang telah dibuat.
Kalendar cal1 = Calendar.getInstance (); // menyatakan cal1 Calendar cal2 = Calendar.getInstance (); // menyatakan cal2 Calendar cal3 = Calendar.getInstance (); // menyatakan cal3 cal1.setTime (tarikh1); // menggunakan tarikh untuk cal1 cal2.setTime (tarikh2); cal3.setTime (tarikh3);
Langkah 3. Bandingkan cal1 dan cal2 menggunakan sebelumnya
Kod di bawah harus dicetak benar kerana cal1 adalah sebelum cal2.
System.out.print (cal1.be sebelumnya (cal2)); // akan dicetak benar
Langkah 4. Bandingkan cal1 dan cal2 menggunakan selepas
Kod di bawah harus dicetak palsu kerana cal1 sebelum cal2.
System.out.print (cal1.after (cal2)); // cetakan palsu
Langkah 5. Bandingkan cal1 dan cal2 menggunakan sama
Kod di bawah akan menunjukkan contoh kes benar dan palsu. Keadaan bergantung pada contoh kalendar yang dibandingkan. Kod tersebut hendaklah mencetak "true", kemudian "false" pada baris seterusnya.
System.out.println (cal1.equals (cal3)); // mencetak benar: cal1 == cal3 System.out.print (cal1.equals (cal2)); // mencetak palsu: cal1! = cal2
Kaedah 4 dari 4: Menggunakan getTime
Langkah 1. Gunakan getTime
Anda juga dapat membandingkan titik waktu dua tarikh secara langsung, walaupun pendekatan sebelumnya mungkin lebih mudah dibaca dan lebih disukai. Ini akan menjadi perbandingan dua jenis data primitif, sehingga dapat dilakukan dengan "", dan "==".
Langkah 2. Buat objek lama
Sebelum anda dapat membandingkan tarikh, anda mesti membuat bilangan bulat panjang dengan data dari objek Tarikh yang dibuat sebelumnya. Nasib baik, kaedah getTime () akan membuat sebahagian besar kerja untuk anda.
lama1 = getTime (tarikh1); // menyatakan waktu primitif1 dari tarikh1 lama2 = getTime (tarikh2); // menyatakan waktu primitif2 dari tarikh2
Langkah 3. Lakukan perbandingan kurang
Gunakan simbol kurang daripada (<) untuk membandingkan dua nilai integer ini. Oleh kerana time1 kurang dari waktu 2, mesej pertama harus dicetak. Pernyataan lain disertakan untuk sintaks yang betul.
jika (time1 <time2) {System.out.println ("date1 adalah sebelum tarikh2"); // akan dicetak sejak time1 <time2} lain {System.out.println ("date1 tidak sebelum tarikh2"); }
Langkah 4. Lakukan lebih besar daripada perbandingan
Gunakan simbol lebih besar daripada (>) untuk membandingkan dua nilai integer ini. Oleh kerana masa1 lebih besar daripada masa 2, mesej pertama harus dicetak. Pernyataan lain disertakan untuk sintaks yang betul.
jika (time2> time1) {System.out.println ("date2 adalah selepas tarikh1"); // akan dicetak sejak time2> time1} lain {System.out.println ("date2 bukan selepas tarikh1"); }
Langkah 5. Lakukan perbandingan yang sama
Gunakan simbol untuk memeriksa kesamaan (==) untuk membandingkan dua nilai integer ini untuk kesamaan. Oleh kerana time1 sama dengan time3, mesej pertama harus dicetak. Sekiranya program sampai ke pernyataan lain, itu bermakna masa tidak sama.
if (time1 == time2) {System.out.println ("tarikhnya sama"); } lain {System.out.println ("tarikhnya tidak sama"); // akan dicetak sejak waktu1! = masa2}