LocalDateTime 添加毫秒

gog*_*uma 3 java milliseconds java-time

我想用 LocalDateTime 增加毫秒值。我使用了plusNanos,因为我没有plusmillisecond。我想知道这是否是正确的方法。我使用的是 JDK 1.8。我也想知道以后的版本是否有加毫秒的功能。

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));
Run Code Online (Sandbox Code Playgroud)
2022-01-01 00:00:00.123
2022-01-01 00:00:00.124
Run Code Online (Sandbox Code Playgroud)

Car*_*tem 9

添加纳秒是一种完全有效的方法。如果您想要一个更不言自明的解决方案,您可以使用LocalDateTime#plus(long, TemporalUnit)

private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");

public static void main(String[] args) {
    LocalDateTime localDateTime = LocalDateTime.parse("2022-01-01 00:00:00.123", FORMATTER);
    localDateTime = localDateTime.plus(1L, ChronoUnit.MILLIS);
    //         How much you are adding ^              ^ What you are adding

    System.out.println(FORMATTER.format(localDateTime));
}
Run Code Online (Sandbox Code Playgroud)

TemporalUnit参数准确地解释了您要添加到时间戳中的内容,从而使其他可能查看代码的程序员更容易理解您的代码。它还负责幕后的单位转换,因此人为错误的余地较小,并且您的代码不会因数学而混乱。