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

Java中如何将LocalDateTime对象的时间设置为00:00:00?有没有其他方法?

Java中将LocalDateTime时间部分设置为00:00:00的其他实现方法

除了你已知的「基于原对象日期新建零点LocalDateTime」的方案外,还有3种java.time包原生支持的实现方式,所有操作都会返回新的不可变对象,不会修改原LocalDateTime的取值:

  • 方法1:通过时间粒度截断实现
    调用truncatedTo方法指定截断精度为天,自动清空所有小于天的时间单位,适合按时间维度聚合统计的场景:
    // 导入类:java.time.LocalDateTime、java.time.temporal.ChronoUnit
    LocalDateTime originalTime = LocalDateTime.now();
    LocalDateTime zeroTime = originalTime.truncatedTo(ChronoUnit.DAYS);
    
  • 方法2:直接关联当天最小时间常量
    写法最简洁,LocalTime.MIN默认对应00:00:00.000000000:
    // 导入类:java.time.LocalDateTime、java.time.LocalTime
    LocalDateTime originalTime = LocalDateTime.now();
    LocalDateTime zeroTime = originalTime.with(LocalTime.MIN);
    
  • 方法3:逐字段覆盖时间属性
    灵活性最高,如需设置非零点的固定时间,仅需修改对应字段的赋值即可:
    // 导入类:java.time.LocalDateTime
    LocalDateTime originalTime = LocalDateTime.now();
    LocalDateTime zeroTime = originalTime.withHour(0)
            .withMinute(0)
            .withSecond(0)
            .withNano(0);
    

以上三种方案和你已知的originalTime.toLocalDate().atStartOfDay()执行结果完全等价,无性能差异,可以根据业务场景的可读性要求自由选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:24:06