Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mengira Umur dengan Aman dalam Tahun Menggunakan Java?

Bagaimanakah Saya Boleh Mengira Umur dengan Aman dalam Tahun Menggunakan Java?

DDD
DDDasal
2024-12-18 11:16:11344semak imbas

How Can I Reliably Calculate Age in Years Using Java?

Kaedah Java untuk Mengira Umur

Masalah:

Membangunkan kaedah Java yang mengembalikan umur dalam tahun sebagai integer . Kaedah ini mengambil objek Tarikh yang mewakili tarikh lahir.

Pelaksanaan Semasa:

public int getAge() {
    long ageInMillis = new Date().getTime() - getBirthDate().getTime();

    Date age = new Date(ageInMillis);

    return age.getYear();
}

Batasan:

  • kaedah getYear() ditamatkan.
  • Ketepatan arus kaedah boleh dipersoalkan tanpa ujian unit.

Penyelesaian Diperbaiki dengan JDK 8:

JDK 8 memperkenalkan penyelesaian yang diperhalusi menggunakan kelas LocalDate:

public class AgeCalculator {

    public static int calculateAge(LocalDate birthDate, LocalDate currentDate) {
        if ((birthDate != null) & (currentDate != null)) {
            return Period.between(birthDate, currentDate).getYears();
        } else {
            return 0;
        }
    }
}

JUnit Ujian:

public class AgeCalculatorTest {

    @Test
    public void testCalculateAge_Success() {
        // setup
        LocalDate birthDate = LocalDate.of(1961, 5, 17);
        // exercise
        int actual = AgeCalculator.calculateAge(birthDate, LocalDate.of(2016, 7, 12));
        // assert
        Assert.assertEquals(55, actual);
    }
}

Cadangan:

Naik taraf kepada JDK 8 untuk penyelesaian yang lebih baik dan boleh dipercayai untuk mengira umur.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Umur dengan Aman dalam Tahun Menggunakan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn