Java 8 LocalDateTime - 如何在String转换中保留.000毫秒

dan*_*l9x 3 java format datetime datetime-format java-time

我有一个时间戳,我通过String以下格式收到:

2016-10-17T12:42:04.000

我正在通过以下行将LocalDateTime其转换为a 添加一些天(然后返回到a String):

String _120daysLater = LocalDateTime.parse("2016-10-17T12:42:04.000",
    DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS")).minusDays(120).toString());
Run Code Online (Sandbox Code Playgroud)

但是,我注意到它返回的响应会减少.000毫秒.

我不确定确保保留确切模式的最简洁方法.现在我只是添加一毫秒,并且可能有一种方法可以将旧版本SimpleDateFormat加入其中,但我希望有一种更好的方法.

War*_*ard 13

如果为零,LocalDateTime :: toString将忽略部分:

使用的格式将是最短的,输出省略的部分隐含为零的时间的完整值.

使用LocalDateTime :: format而不是依赖toString().

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");
LocalDateTime _120daysLater = LocalDateTime.parse("2016-10-17T12:42:04.000", formatter).minusDays(120);

// This just uses default formatting logic in toString. Don't rely on it if you want a specific format.
System.out.println(_120daysLater.toString());

// Use a format to use an explicitly defined output format
System.out.println(_120daysLater.format(formatter));
Run Code Online (Sandbox Code Playgroud)