Hitung Umur di Jawa

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan melihat cara menghitung usia menggunakan perpustakaan Java 8, Java 7 dan Joda-Time.

Dalam semua kes, kami akan mengambil tarikh lahir dan tarikh semasa sebagai input dan mengembalikan umur yang dikira dalam beberapa tahun.

2. Menggunakan Java 8

Java 8 memperkenalkan API Date-Time baru untuk bekerja dengan tarikh dan waktu, sebahagian besarnya berdasarkan perpustakaan Joda-Time.

Di Java 8, kita dapat menggunakan java.time.LocalDate untuk tarikh lahir dan tarikh semasa kita, dan kemudian menggunakan Period untuk mengira perbezaannya dalam tahun:

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

LocalDate sangat berguna di sini kerana hanya mewakili tarikh, berbandingkelas Tarikh Java, yang mewakili tarikh dan waktu. LocalDate.now () dapat memberi kita tarikh terkini.

Dan Period berguna apabila kita perlu memikirkan jangka masa dalam tahun, bulan dan hari.

Sekiranya kita ingin mendapatkan usia yang lebih tepat, katakan dalam beberapa saat, maka kita ingin melihat masing-masing LocalDateTime dan Duration (dan mungkin akan kembali lama ).

3. Menggunakan Joda-Time

Sekiranya Java 8 bukan pilihan, kita masih boleh mendapatkan hasil yang sama dari Joda-Time , standard de-facto untuk operasi tarikh-waktu di dunia pra-Java 8.

Kita perlu menambahkan kebergantungan Joda-Time ke pom kita:

 joda-time joda-time 2.10 

Dan kemudian kita boleh menulis kaedah yang serupa untuk mengira usia, kali ini menggunakan LocalDate dan Years dari 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 melancarkan sendiri, sehingga ada beberapa pendekatan.

Sebagai salah satu contoh, kita boleh 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, kita menukar objek BirthDate dan currentDate yang diberikan menjadi bilangan bulat dan mencari perbezaan di antara mereka, dan selagi kita belum berada di Java 7 dalam 8000 tahun , pendekatan ini harus berfungsi sehingga saat itu.

5. Kesimpulan

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

Untuk mengetahui lebih lanjut mengenai sokongan data-data Java 8, periksa pengenalan tarikh 8 Java 8 kami.

Dan seperti biasa, kod lengkap untuk coretan ini terdapat di GitHub.