Java - Menghitung Selisih Tanggal

[Update]
Mulai JDK 8, menghitung selisih antara dua waktu dapat dilakukan dengan lebih praktis menggunakan tipe data java.time.LocalDate
Dimulai dengan menentukan tanggal awal, misalnya sebagai berikut
LocalDate birthDate = LocalDate.of(1990, 01, 22);
LocalDate.of digunakan untuk menginisialisasi tanggal, dengan memasukkan tiga parameter yaitu tahun, bulan, dan tanggal.
Selanjutnya membuat variabel baru untuk menampung tanggal hari ini
LocalDate now = LocalDate.now();
Selisih antara tanggal awal dengan tanggal hari ini dapat dihitung menggunakan java.time.Period
Period diff = Period.between(birthDate, now);
Selisih antara dua tanggal dapat diperinci menjadi tahun, bulan, hingga hari
System.out.printf("\nDifference is %d years, %d months and %d days old\n\n", diff.getYears(), diff.getMonths(), diff.getDays());

Source code lengkap dapat dilihat sebagai berikut ini

--------------------------------------------
Untuk menghitung selisih antara dua waktu di Java, dapat digunakan tipe data Date.
Buat variabel untuk mengambil tanggal hari ini
Date currentDate = new Date();
Kemudian tentukan tanggal yang akan dihitung selisihnya dengan tanggal hari ini, bisa digunakan String yang diisi dengan tanggal yang akan dihitung
String birthDateInString = "22/01/1990";
Selanjutnya perlu untuk mengubah format tanggal dari String ke tipe Date, gunakan SimpleDateFormat untuk memformat tanggal yang sebelumnya ditulis dalam bentuk String
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Buat variabel dengan tipe Date untuk menampung tanggal hasil parsing dari String
Date birthDate = null;
Selanjutnya lakukan parsing tanggal dari format String menjadi Date
birthDate = format.parse(birthDateInString);
Setelah tanggal berhasil diparsing ke tipe Date, dapat dicari selisih waktunya dari tanggal hari ini dalam satuan miliseconds
long diff = currentDate.getTime() - birthDate.getTime();
Dari variabel diff dalam satuan miliseconds, selanjutnya bisa dihitung selisih waktu dalam satuan lain
long diffSeconds = diff / 1000;
long diffMinutes = diff / (60 * 1000);
long diffHours = diff / (60 * 60 * 1000);
long diffDays = diff / (24 * 60 * 60 * 1000);
long diffMonths = (diff / (24 * 60 * 60 * 1000)) / 30;
long diffYears = ((diff / (24 * 60 * 60 * 1000)) / 30) / 12;
Untuk diffMonths, nilai yang didapatkan adalah perkiraan karena semua bulan disamakan 30 hari.

Source code lengkap dapat dilihat sebagai berikut ini

Comments