Приведенный ниже фрагмент кода (Java 8) отбрасывает часть секунд моего времени даты , если значение секунд равно нулю в пределах даты, проанализированной с помощью LocalDateTime.parse , например, 2018-07-10 00: 00: 00 :
final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
final LocalDateTime localDateTime = LocalDateTime.parse("2018-07-06 00:00:00", dateTimeFormatter);
final String lexicalDate = localDateTime.toString();
System.out.println("Lexical Date : "+ lexicalDate);
final XMLGregorianCalendar gregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(lexicalDate);
System.out.println("Gregorian Calendar : "+ gregorianCalendar);
Лексическая дата печатается как:
Лексическая дата: 2018-07-10T00: 00
вместо:
Лексическая дата: 2018-07-10T00: 00: 00
Теперь это влияет на значение даты в григорианском календаре, которое возвращает ноль при отбрасывании секунды.В других случаях, когда значение секунд больше нуля, оно отлично работает.
javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar(lexicalDate)
Приведенный выше код возвращает значение null всякий раз, когда значение секунд сбрасывается из-за значения 00 секунд в проанализированной строке.
Может кто-нибудь помочь с лучшим способом решения этой проблемы с использованием времени LocalDate, в противном случае это может быть ошибка / забавный элемент управления в Java 8 LocalDateTime.
Обратите внимание, у меня нет контроля над этимзначение даты, оно исходит от сторонней платформы.