tl; dr
LocalDate.now(ZoneId.of("America/Montreal"))
.minusDays(90)
java.time
câu trả lời khác ở đây là lỗi thời. Cách hiện đại là với các lớp java.time.
LocalDate
Lớp LocalDate
đại diện cho một giá trị ngày tháng chỉ mà không cần thời gian của 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.
ZoneId z = ZoneId.of("America/Montreal") ;
LocalDate today = LocalDate.now(z) ;
Sau đó bạn có thể cộng hoặc trừ ngày.
LocalDate ago090 = today.minusDays(90) ;
LocalDate ago120 = today.minusDays(120) ;
LocalDate ago160 = today.minusDays(160) ;
Để tạo chuỗi ở định dạng chuẩn ISO 8601 của YYYY-MM-DD, hãy gọi toString
. Đối với các định dạng khác, tìm kiếm Stack Overflow cho lớp học DateTimeFormatter
để xem nhiều ví dụ và thảo luận.
String output = ago120.toString() ;
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 sang 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?
- Java SE 8 và SE 9 và sau
- Built-in.
- Một phần của API Java chuẩn với gói được triển khai.
- Java 9 thêm một số tính năng và bản sửa lỗi nhỏ.
- Java SE 6 và SE 7
- Hầu hết các chức năng java.time được back-chuyển đến Java 6 & 7 trong ThreeTen-Backport.
- Android
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.
Bạn có thể cụ thể hơn về các lỗi và mã đã tạo ra chúng không? – ObscureRobot
có thể trùng lặp của [Làm thế nào để trừ X ngày kể từ ngày sử dụng lịch Java?] (Http://stackoverflow.com/questions/212321/how-to-subtract-x-days-from-a-date-using-java -calendar) –