【发布时间】:2020-12-15 05:26:40
【问题描述】:
LocalDateTime.parse 缺少第二个 (00)
LocalTime time = LocalTime.NOON;
DateTimeFormatter formatTime = DateTimeFormatter.ofPattern("HH:mm:ss");
String value ="20200810" + time.format(formatTime);
LocalDateTime localDateTime = LocalDateTime.parse(value, DateTimeFormatter.ofPattern("yyyyMMddHH:mm:ss"));
日志
=========value========== 2020081012:00:00
===localDateTime===2020-08-10T**12:00**
我也尝试将LocalTime.NOON 更改为LocalTime.of(12,0,0),但结果仍然相同。
【问题讨论】:
-
如何创建“===localDateTime===2020-08-10T12:00”的输出?问题就在那里。
-
你是打印
localDateTime还是打印localDateTime.format(formatTime)? -
是 LocalDateTime.parse() 之后的问题。我将 system.out.println 放入代码并获取日志。 System.out.println("===localDateTime===" +localDateTime);
-
这就是原因...默认格式化程序或
toString()会截断零秒... -
如果你只是
System.out.println(localDateTime)它将调用localDateTime.toString()的默认实现,这将返回date.toString() + 'T' + time.toString()并且 time.toString() JavaDoc 状态:“使用的格式将是最短的输出时间的完整值,其中省略的部分被暗示为零。"
标签: java java-time localdatetime datetimeformatter