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
相关产品推荐
相关产品推荐

