DateTimeFormatter desiredFormatter
= DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSSSS");
String truncatedDateTimeString = "2017-06-05T19:27";
LocalDateTime dateTime = LocalDateTime.parse(truncatedDateTimeString);
String fixedDateTimeString = dateTime.format(desiredFormatter);
System.out.println(fixedDateTimeString);
这张照片
2017-06-05T19:27:00.000000
如果还缺少分钟和小时,我们还需要一些技巧。调查
DateTimeFormatterBuilder
及其
parseDefaulting
方法使用方括号
[]
在格式模式字符串中,围绕可能缺少的部分。我不确定如果时间被截断,字符串会是什么样子
T
也失踪了?
另一方面,如果字符串
2017-06-05T19:27:10.917360
,在本例中,只需打印回相同的字符串。
我也不确定你真正想解决的问题是什么。尾随的零是冗余的,那么它们被截断的问题是什么呢?
编辑:
下面的方法充实了我所说的内容
DateTimeFormatterBuilder
它的
解析默认值
格式模式字符串中的方法和方括号:
public static String addTrailingZerosToTimestamp(String timeStamp) {
DateTimeFormatter truncatedFormatter = new DateTimeFormatterBuilder()
.appendPattern("uuuu-MM-dd['T'HH[:mm[:ss[.SSSSSS]]]]")
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.parseDefaulting(ChronoField.NANO_OF_SECOND, 0)
.toFormatter();
DateTimeFormatter desiredFormatter
= DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSSSS");
LocalDateTime dateTime = LocalDateTime.parse(timeStamp, truncatedFormatter);
return dateTime.format(desiredFormatter);
}
它与
2017-06-05
,
2017-06-05T19
,
2017-06-05T19:27
,
2017-06-05T19:27:10
和
2017-06-05T19:27:10.917360
,但不带
2017-06-05T19:27:10.917
.