Hitung Usia di Jawa

1. Ikhtisar

Dalam tutorial singkat ini, kita akan melihat bagaimana menghitung usia menggunakan pustaka Java 8, Java 7 dan Joda-Time.

Dalam semua kasus, kami akan menggunakan tanggal lahir dan tanggal sekarang sebagai masukan dan mengembalikan usia yang dihitung dalam tahun.

2. Menggunakan Java 8

Java 8 memperkenalkan API Waktu-Tanggal baru untuk bekerja dengan tanggal dan waktu, sebagian besar didasarkan pada pustaka Joda-Waktu.

Di Java 8, kita dapat menggunakan java.time.LocalDate untuk tanggal lahir dan tanggal sekarang, lalu menggunakan Periode untuk menghitung perbedaannya dalam tahun:

public int calculateAge( LocalDate birthDate, LocalDate currentDate) { // validate inputs ... return Period.between(birthDate, currentDate).getYears(); }

LocalDate sangat membantu di sini karena hanya mewakili tanggal, dibandingkan dengankelas Date Java, yang mewakili tanggal dan waktu. LocalDate.now () bisa memberi kita tanggal sekarang.

Dan Periode berguna ketika kita perlu memikirkan periode waktu dalam tahun, bulan dan hari.

Jika kami ingin mendapatkan usia yang lebih tepat, katakanlah dalam hitungan detik, maka kami ingin melihat LocalDateTime dan Duration , masing-masing (dan mungkin mengembalikan yang lama ).

3. Menggunakan Joda-Time

Jika Java 8 bukan pilihan, kita masih bisa mendapatkan hasil yang sama dari Joda-Time , standar de-facto untuk operasi tanggal-waktu di dunia pra-Java 8.

Kita perlu menambahkan dependensi Joda-Time ke pom kita:

 joda-time joda-time 2.10 

Dan kemudian kita dapat menulis metode serupa untuk menghitung usia, kali ini menggunakan LocalDate dan Years from Joda-Time:

public int calculateAgeWithJodaTime( org.joda.time.LocalDate birthDate, org.joda.time.LocalDate currentDate) { // validate inputs ... Years age = Years.yearsBetween(birthDate, currentDate); return age.getYears(); }

4. Menggunakan Java 7

Tanpa API khusus di Java 7, kita dibiarkan menggulung sendiri, jadi ada beberapa pendekatan.

Sebagai salah satu contoh, kita dapat menggunakan java.util.Date :

public int calculateAgeWithJava7( Date birthDate, Date currentDate) { // validate inputs ... DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); int d1 = Integer.parseInt(formatter.format(birthDate)); int d2 = Integer.parseInt(formatter.format(currentDate)); int age = (d2 - d1) / 10000; return age; }

Di sini, kami mengonversi objek given dateDate dan currentDate menjadi bilangan bulat dan menemukan perbedaan di antara keduanya, dan selama kami tidak masih menggunakan Java 7 dalam 8000 tahun , pendekatan ini akan berfungsi hingga saat itu.

5. Kesimpulan

Dalam artikel ini, kami menunjukkan cara menghitung usia dengan mudah menggunakan library Java 8, Java 7, dan Joda-Time.

Untuk mempelajari lebih lanjut tentang dukungan data-waktu Java 8 lihat pengantar tanggal-waktu Java 8 kami.

Dan seperti biasa, kode lengkap untuk potongan ini dapat ditemukan di GitHub.