Mục lục
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 LocalDateTime và Duration để 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