Cách tính tuổi trong Java

Trong bài viết ngắn này chúng ta cùng nhau tìm cách tính tuổi bằng cách sử dụng Java 8, Java 7 và thư viện Joda-Time.

Java 8

Java 8 đã giới thiệu các Date API mới để làm việc với các dữ liệu dạng date và time trong Java. Chúng ta có thể sử dụng LocalDate để lưu trữ cho ngày sinh nhật và cả ngày hiện tại. Sau đó tính khoảng thời gian giữa 2 ngày này thông qua Period class.

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

LocalDate là một dạng dữ liệu chỉ lưu trữ các giá trị ngày, tháng và năm, trong khi Date class có chứa cả giờ, phút, giây. Chúng ta có thể lấy ngày hiện tại bằng cách sử dụng LocalDate.now().

Nếu các bạn muốn tính chính xác hơn đến từng phút giây thì các bạn có thể sử dụng LocalDateTimeDuration để tính.

Joda-time

Ngoài sử dụng các class được cung cấp từ  Java 8, chúng ta vẫn có thể tính được kết quả tương tự  khi sử dụng Joda-Time.

Chúng ta cần thêm Joda dependency vào file pom.

<dependency>
  <groupId>joda-time</groupId>
  <artifactId>joda-time</artifactId>
  <version>2.10</version>
</dependency>

Và sau đó chúng ta có thể sử dụng LocalDate và Years class từ 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();   
}

Java 7

Đối với phiên bản Java 7 trở xuống thì chúng ta cần triển khai mã code nhiều hơn một chút so thiếu nhiều hàm chức năng.

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;                                                                        
}

Nguồn

https://www.baeldung.com/java-get-age

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x