tl; dr
LocalDate.now() // Determine today’s date.
.plusMonths(3) // Add three months.
java.time
Cách tiếp cận hiện đại sử dụng lớp học java.time.
Lớp LocalDate
đại diện cho giá trị chỉ có ngày không có thời gian trong ngày và không có múi giờ.
Múi giờ rất quan trọng trong việc xác định ngày. Đối với bất kỳ thời điểm cụ thể nào, ngày thay đổi trên toàn cầu theo múi giờ. Ví dụ: một vài phút sau nửa đêm ở Paris France là một ngày mới trong khi vẫn “ngày hôm qua” trong Montréal Québec.
Nếu không xác định múi giờ, JVM ngầm áp dụng múi giờ mặc định hiện tại của nó. Mặc định đó có thể thay đổi bất kỳ lúc nào, do đó kết quả của bạn có thể thay đổi. Tốt hơn để chỉ định múi giờ mong muốn/dự kiến của bạn một cách rõ ràng làm đối số.
Chỉ định proper time zone name ở định dạng continent/region
, chẳng hạn như America/Montreal
, Africa/Casablanca
hoặc Pacific/Auckland
.Không bao giờ sử dụng từ viết tắt 3-4 ký tự như EST
hoặc IST
vì chúng là không múi giờ thực, không được chuẩn hóa và thậm chí không độc đáo (!).
ZoneId z = ZoneId.of("America/Montreal");
LocalDate today = LocalDate.now(z);
Thêm ba tháng, để cho java.time làm toán.
LocalDate threeMonthsLater = today.plusMonths(3) ;
Về java.time
Khung java.time được xây dựng vào Java 8 và sau đó. Các lớp này thay thế các lớp học ngày giờ legacy phiền hà cũ như java.util.Date
, Calendar
, & SimpleDateFormat
.
Dự án Joda-Time, hiện đang ở maintenance mode, khuyên di chuyển đến các lớp java.time.
Để tìm hiểu thêm, hãy xem Oracle Tutorial. Và tìm kiếm Stack Overflow cho nhiều ví dụ và giải thích. Đặc điểm kỹ thuật là JSR 310.
Nơi lấy các lớp java.time?
Dự án mở rộng ThreeTen-Extra java.time với các lớp bổ sung. Dự án này là một nền tảng chứng minh cho những bổ sung có thể có trong tương lai vào java.time. Bạn có thể tìm thấy một số lớp học hữu ích tại đây như Interval
, YearWeek
, YearQuarter
và more.
BTW, Kurosawa là gì? –
Theo Wikipedia, đó là rượu sake được sản xuất tại Saku, Nagano, Nhật Bản. –