Những điểm mới của Java 8 (phần 4: DateTime API)

717

Bài viết được sự cho phép của smartjob.vn

Trước khi phát hành Java 8, lập trình viên Java phàn nàn nhiều về API xử lý thời gian. Nhiều class, method DateTime API cũ đã được đánh dấu bằng annotation @Deprecated (“Bị phản đối”). Các class, method xử lý thời gian cũ vẫn dùng được (để đảm bảo tính tương thích ngược của JDK) tuy nhiên không khuyến khích sử dụng.

Tuyển dụng Java lương cao cho bạn

  Các trường hợp kiểm thử cho trường nhập Ngày tháng năm (Date field)
  Date & Time trong Python

Nguyên nhân gây ra sự sai lầm của DateTime API cũ: Giây nhuận (leap second)

Nguyên nhân gây ra sự sai lầm của DateTime API cũ: Giây nhuận (leap second) [1]. Ngày 30/06/2015 có 86401 giây, chứ không phải 86400 giây như những ngày khác. 23 giờ 59 phút 60 giây là khoảnh khắc có thật, nhằm đảm bảo tính đồng bộ của thời gian của máy đo chuẩn và thời gian vật lý.

Ảnh chụp mã nguồn class java.util.Date

Ảnh chụp mã nguồn class java.util.Date

Trước Java 8, lập trình viên Java xử lý các bài toán thời gian phức tạp, cần sự chính xác thì dùng thư viện nào? Dùng thư viện Joda-time [2]. Hiện nay, với JDK 8 [3], DateTime API mới mang đến sự đơn giản và mạnh mẽ.

Các class mới trong package java.time.*
java.time.Clock: Đồng hồ xử lý thời gian, ngày, giờ có xét đến múi giờ (time-zone)
java.time.Duration: Xử lý dựa trên thời lượng của thời gian (ví dụ: Thời lượng 42.3 giây)
java.time.Instant: Điểm thời gian trên Lịch biểu
LocalDate: Thời gian địa phương (tính theo múi giờ), tuân theo hệ thống lịch quy chuẩn ISO-8601, ví dụ: 2016-02-02
v.v..

Ví dụ minh họa tính linh hoạt, dễ dùng của DateTime API mới

Nguyên nhân gây ra giây nhuận (leap second) là do Trái Đất quay với tốc độ không đều dẫn đến lệch giờ đồng hồ đo chuẩn của con người và giờ tính theo bóng nắng mặt trời. Các nhà khoa học sử dụng “giây nhuận” để đồng bộ và chính xác hóa thời gian ( https://en.wikipedia.org/wiki/Leap_second#Slowing_rotation_of_the_Earth ). Sự chính xác của thời gian là quan trọng, sự cố Y2K (Year 2000) từng xảy ra là do vấn đề thời gian trong các hệ thống máy tính.

Liên kết nhắc đến trong bài viết
[1] https://docs.oracle.com/javase/tutorial/datetime/iso/legacy.html
https://blogs.oracle.com/java-platform-group/entry/the_2015_leap_second_s
[2] http://www.joda.org/joda-time/
[3] https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html

Tải về mã nguồn sử dụng trong bài viết: DateTimeAPI
hoặc clone/fork từ Github: https://github.com/SmartJobVN/java8

Bài viết gốc được đăng tải tại smartjob.vn

Có thể bạn quan tâm:

Xem thêm Việc làm IT hấp dẫn trên TopDev