LocalDateTime удаляет миллисекунды

Я работаю в java-приложении, где я использую Java 8.

Я интегрировал базу данных (несколько баз данных Oracle, Mysql, Postgres) и где в DB я строю созданную дату.

формат даты в БД - 2015-07-29 16: 23: 28.143

Я извлекаю это из БД и устанавливаю в объекте Localdatetime

myObj.setCreated(rs.getTimestamp("created").toLocalDateTime());

Итак, проблема заключается в том, что я не хочу показывать/отправлять миллисекунду в ответе. я хочу показать/отправить дату, например 2015-07-29 16:23:28

Я пробовал форматтер, но он терпит неудачу, поскольку он дает строку, и я не хочу менять объект LocalDateTime на String, поскольку это приведет к серьезным изменениям во всех приложениях Java. Поэтому нужно найти решение

Может ли кто-нибудь знать какое-либо решение по этому поводу.

Ответы

Ответ 1

Просто установите для них значение 0:

myObj.setCreated(rs.getTimestamp("created").toLocalDateTime().withNano(0));

Пример/доказательство:

import java.time.LocalDateTime;

public class DateTimeSample {

  public static void main(String[] args) {
    LocalDateTime ldt = LocalDateTime.now();
    System.out.println(ldt);
    System.out.println(ldt.withNano(0));
  }
}

Вывод:

2015-07-30T16:29:11.684
2015-07-30T16:29:11

Ответ 2

Вы можете попробовать это, чтобы удалить что-нибудь меньшее, чем секунды

ldt = ldt.truncatedTo(ChronoUnit.SECONDS);