JDK 1.8中LocalDateTime增加毫秒的实现及高版本API疑问
LocalDateTime 增加毫秒值的实现及JDK版本支持说明
一、plusNanos(1000000)替代方式的正确性
你采用的plusNanos(1000000)来为LocalDateTime增加1毫秒的方式是完全正确的。
因为1毫秒 = 1000000纳秒,调用该方法后,LocalDateTime的纳秒部分会准确增加1000000,对应毫秒位加1。从你的测试结果也能验证这一点:初始时间为2022-01-01 00:00:00.123,执行增量操作后变为2022-01-01 00:00:00.124,完全符合预期。
你的测试代码如下:
DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); LocalDateTime ldt = LocalDateTime.parse("2022-01-01 00:00:00.123",f); System.out.println(ldt.format(f)); ldt = ldt.plusNanos(1000000); System.out.println(ldt.format(f));
输出结果:
2022-01-01 00:00:00.123 2022-01-01 00:00:00.124
二、后续JDK版本的直接方法支持
从JDK 9开始,LocalDateTime类新增了直接的plusMillis(long millis)方法(注意方法名是plusMillis,而非plusMillisecond),可以直接传入毫秒数完成时间增量操作,无需再通过纳秒转换。例如:
ldt = ldt.plusMillis(1); // 直接增加1毫秒
内容的提问来源于stack exchange,提问作者goguma
相关产品推荐
相关产品推荐

