Вы должны ожидать разницу в выходе между
LocalDateTime dateLDT = LocalDateTime.parse(dateFormatted, f);
System.out.println(dateLDT);
И
System.out.println(dateLDT.format(f)) //or f.format(dateLDT)
System.out.println(dateLDT);
печатает значение dateLDT.toString()
, которое, как ожидается, не даст такой же выходкак ваш шаблон.
Когда вы посмотрите на LocalDateTime.toString()
, вы увидите, что он делегирует часть времени LocalTime.toString()
, которая условно печатает секунды:
public String toString() {
...
if (secondValue > 0 || nanoValue > 0) {
buf.append(secondValue < 10 ? ":0" : ":").append(secondValue);
...
}
}
return buf.toString();
}
Он просто пропускаетполе секунд, если его значение равно 0
.
В этом случае вам всегда нужно использовать DateTimeFormatter
для форматирования даты, если вы должны быть уверены в формате вывода / ввода.