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
, его методе parseDefaulting
и квадратных скобках в строке шаблона формата:
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
.
person
Ole V.V.
schedule
28.01.2018
"2017-06 05T19:27"
не будут преобразованы в отметку времени. - person Mayur   schedule 23.01.2018