Rumah >Java >javaTutorial >Mengapa pengiraan perbezaan tarikh Java saya tidak tepat, dan bagaimana saya boleh membetulkannya?
Menentukan Perbezaan Masa Antara Tarikh
Pernyataan Masalah:
Mengira perbezaan hari antara dua tarikh, agingDate dan hari ini, menggunakan Java telah membuahkan hasil yang tidak dijangka. Perbezaan yang dikira adalah lebih besar daripada bilangan hari sebenar.
Analisis:
Kod yang disediakan untuk mengira perbezaan hari antara dua tarikh nampaknya betul. Walau bagaimanapun, ralat mungkin berpunca daripada isu yang berpotensi di tempat lain dalam kod anda.
Penyelesaian:
1. Objek Salah: Pastikan agingDate dan hari ini adalah contoh kelas Tarikh yang betul. Sahkan bahawa tiada penukaran jenis atau ralat penghantaran.
2. Percanggahan Zon Masa: Sahkan bahawa zon waktu untuk kedua-dua tarikh adalah konsisten. Jika ia berbeza, tukarkan salah satu tarikh untuk memadankan tarikh yang lain atau masukkan pengendalian zon waktu ke dalam pengiraan anda.
3. Pengiraan dan Logik: Semak semula logik dalam calculateDifference() dan pastikan ia mempertimbangkan semua kemungkinan senario dan kes tepi dengan betul.
Pendekatan Alternatif:
Jika langkah penyelesaian masalah di atas tidak menyelesaikan isu, pertimbangkan untuk menggunakan pustaka luaran seperti Joda Time, seperti yang dicadangkan oleh jawapan yang diberikan. Joda Time menyediakan keupayaan manipulasi tarikh dan masa yang mantap dan boleh memudahkan pengiraan ini. Contoh kod berikut menunjukkan cara menggunakan Joda Time:
import java.util.Date; import org.joda.time.DateTime; import org.joda.time.Days; Date past = new Date(110, 5, 20); // June 20th, 2010 Date today = new Date(110, 6, 24); // July 24th int days = Days.daysBetween(new DateTime(past), new DateTime(today)).getDays(); // => 34
Atas ialah kandungan terperinci Mengapa pengiraan perbezaan tarikh Java saya tidak tepat, dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!