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

如何在Java中将时间值截断到十分之一秒?

如何在Java中将时间值截断到十分之一秒?

我太懂你不想写自定义TemporalUnit的麻烦了——那玩意儿确实有点啰嗦,完全没必要给自己加工作量!其实有两个更简洁的办法,不用造轮子就能实现截断到十分之一秒的需求:

方法一:直接调整纳秒数(修改时间对象本身)

因为Java的时间类(比如LocalTime、ZonedDateTime)的纳秒精度是最细的,而十分之一秒刚好等于100,000,000纳秒,我们可以直接对纳秒部分做取整运算:

LocalTime time = LocalTime.now();
System.out.println("原始时间: " + time);

// 计算并设置截断后的纳秒值
int truncatedNanos = (time.getNano() / 100_000_000) * 100_000_000;
LocalTime timeToTenth = time.withNano(truncatedNanos);

System.out.println("截断到十分之一秒: " + timeToTenth);

举个实际输出的例子:如果原始时间是15:00:55.322141,截断后就会变成15:00:55.300000,刚好保留到十分之一秒的精度。这个方法直接修改时间对象的内部值,后续用这个对象做其他操作也都是截断后的精度。

方法二:格式化输出(仅显示层面截断)

如果你只是需要把时间以十分之一秒的精度展示出来,不需要修改原时间对象,那用DateTimeFormatter格式化是更省事的选择:

LocalTime time = LocalTime.now();
DateTimeFormatter tenthSecondFormatter = DateTimeFormatter.ofPattern("HH:mm:ss.S");
String formattedTime = tenthSecondFormatter.format(time);

System.out.println("格式化后(十分之一秒精度): " + formattedTime);

这个方法会直接输出类似15:00:55.3的字符串,但要注意:原LocalTime对象的精度并没有改变,只是显示的时候只保留了一位小数的秒数。如果只是做日志或者前端展示,这个方法足够用了。

当然,你最开始想的自定义TemporalUnit的思路是完全可行的,但对比上面这两个轻量方法,确实没必要费那个劲——毕竟能一行代码解决的问题,就不用写一堆接口实现啦~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 10:29:37