You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何输出两个指定时间戳之间的分段日期时间节点列表

需求说明

需要开发后端程序根据用户输入的起止时间,生成对应时间节点插入数据表,规则为:

  • 首节点为原始开始时间
  • 中间按天生成每日23:59、次日00:00的节点
  • 尾节点为原始结束时间

输入示例

StartTime: 11/26/2021 11:00 PM
EndTime: 11/28/2021 04:00 AM

期望输出

11/26/2021 11:00 PM
11/26/2021 11:59 PM
11/27/2021 12:00 AM
11/27/2021 11:59 PM
11/28/2021 12:00 AM
11/28/2021 04:00 AM
现有代码问题分析
  • 重复节点问题:原有循环逻辑已经遍历到结束日期的23:59,循环结束后又额外添加了结束日期的00:00和结束时间,导致节点重复,还多生成了不需要的结束日期23:59节点
  • 时间精度问题:使用LocalTime.MAX会得到带纳秒的23:59:59.999999999,不符合要求的分钟级精度23:59
  • 输出格式问题:直接打印LocalDateTime默认输出ISO标准格式,没有用定义好的格式化器转为要求的日期字符串格式
修正后实现代码
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;

public class TimeNodeGenerator {
    public static void main(String[] args) {
        String startTimeStr = "11/26/2021 11:00 PM";
        String endTimeStr = "11/28/2021 04:00 AM";
        
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm a");
        LocalDateTime startTime = LocalDateTime.parse(startTimeStr, formatter);
        LocalDateTime endTime = LocalDateTime.parse(endTimeStr, formatter);
        
        List<LocalDateTime> timeNodes = new ArrayList<>();
        // 先加入起始时间
        timeNodes.add(startTime);
        LocalDateTime current = startTime;
        
        // 循环处理到结束日期的前一天
        while (current.toLocalDate().isBefore(endTime.toLocalDate())) {
            // 添加当前天的23:59
            timeNodes.add(current.with(LocalTime.of(23, 59)));
            // 跳到次日00:00并加入
            current = current.plusDays(1).with(LocalTime.MIN);
            timeNodes.add(current);
        }
        // 最后加入结束时间
        timeNodes.add(endTime);
        
        // 格式化输出
        for (LocalDateTime node : timeNodes) {
            System.out.println(formatter.format(node));
        }
    }
}
代码运行输出

完全匹配期望结果:

11/26/2021 11:00 PM
11/26/2021 11:59 PM
11/27/2021 12:00 AM
11/27/2021 11:59 PM
11/28/2021 12:00 AM
11/28/2021 04:00 AM

内容的提问来源于stack exchange,提问作者DBANerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:36:05