推荐使用java 8+的localdate类进行日期增减操作,调用plusdays()或minusdays()返回新实例,支持负数参数,且需避免使用线程不安全的旧date/calendar api。

Java 中在指定日期上增加或减少天数,推荐使用 java.time 包中的类(Java 8+),尤其是 LocalDate,它专为无时区的日期设计,操作简洁且线程安全。
用 LocalDate.plusDays() 和 minusDays() 快速增减天数
LocalDate 是不可变对象,调用 plusDays() 或 minusDays() 会返回一个新的 LocalDate 实例,原对象不变。
- 增加 5 天:LocalDate newDate = oldDate.plusDays(5);
- 减少 10 天:LocalDate newDate = oldDate.minusDays(10);
- 支持负数参数,例如 plusDays(-3) 等价于 minusDays(3)
从字符串或年月日构造初始日期再运算
常见场景是先解析一个日期字符串,再做加减:
- 解析 "2024-06-15":LocalDate date = LocalDate.parse("2024-06-15");
- 构造 2023 年 12 月 25 日:LocalDate xmas = LocalDate.of(2023, 12, 25);
- 然后直接运算:LocalDate afterWeek = xmas.plusDays(7); // 2024-01-01
注意:不要混用旧 API(Date/Calendar)
虽然 java.util.Date 和 Calendar 也能实现,但它们存在线程不安全、API 设计反直觉、易出错等问题。例如 Calendar 的月份从 0 开始(0 表示一月),年份需加 1900,容易引发 bug。除非维护遗留代码,否则不建议使用。
如果必须处理带时间的日期(如 LocalDateTime)
用 LocalDateTime 同样支持 plusDays() 和 minusDays(),逻辑一致:
- LocalDateTime now = LocalDateTime.now();
- LocalDateTime tomorrow = now.plusDays(1);
- 注意:它不包含时区信息;若需时区感知,请用 ZonedDateTime
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











