Java中使用java.time.LocalDate按日期范围生成日期序列
需求: 配置起止日期, 计算两个日期间所有的天数, 或者当前日期到配置日期间的所有天数, 无需关心月份天数差异或者闰年的2月份
日期区间为左闭右开, 需要闭区间自行处理
场景: 按日期执行某些业务, 数据库记录上次执行日期, 计算出配置日期到今天的所有日期, 遍历执行, 最后更新上次执行日期; 由于日期区间左闭右开, 今天到今天的日期个数为0, 所以支持重复调用
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
class Scratch {
private static final Logger log = LoggerFactory.getLogger(Scratch.class);
public static void main(String[] args) {
LocalDate start = LocalDate.now().minusDays(2);
log.info("起始日期(包含), start = {}", start);
LocalDate end = LocalDate.now().plusDays(2);
log.info("终止日期(不包含), end = {}", end);
long p = start.until(end, ChronoUnit.DAYS);
log.info("p = {}", p);
for (int i = 0; i < p; i++) {
LocalDate d = start.plusDays(i);
log.info("d = {}", d);
}
}
}
输出
18:19:43.354 [main] INFO Scratch - 起始日期(包含), start = 2024-12-18
18:19:43.356 [main] INFO Scratch - 终止日期(不包含), end = 2024-12-22
18:19:43.359 [main] INFO Scratch - p = 4
18:19:43.359 [main] INFO Scratch - d = 2024-12-18
18:19:43.359 [main] INFO Scratch - d = 2024-12-19
18:19:43.359 [main] INFO Scratch - d = 2024-12-20
18:19:43.359 [main] INFO Scratch - d = 2024-12-21

浙公网安备 33010602011771号