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
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:
- Học TypeScript trong 30 phút
- Hướng dẫn lấy Date và Time trong C++
- Các đặc điểm của một kỹ sư kiểm thử giỏi (Phần 2)?
Xem thêm Việc làm IT hấp dẫn trên TopDev