Wpis z mikrobloga

Chyba zaraz oszaleję. Do bazy danych zapisywana mam date utworzenia wpisu jako Date, w formacie "2024-06-17T16:15:23.1233", następnie je pobieram, wrzucam w maper:

default LocalDateTime dateMapper(Date date){
if (isNull(date))
return null;

return LocalDateTime.ofInstant(date.toInstant().truncatedTo(ChronoUnit.MINUTES), ZoneId.systemDefault());
}

i tu pojawia się problem, bo ja chcę aby ten format wygladał tak "2024-06-17T16:15", natomiast po mapowaniu wyglada jak to " 2024-06-17T16:15:00", co wcale mnie nie urzadza, bo ja nie chcę tych sekund i milisekund wcale, a nie żeby były wyzerowane...

Ktoś wie, jak to obsłużyć?

#programowanie #naukaprogramowania #java
  • 5
  • Odpowiedz
@mandanda

Problemem jest to, że metoda LocalDateTime.ofInstant() zawsze ustawia wartości sekund i milisekund na zero, jeśli nie są dostarczone. Dlatego mimo twojej próby obcięcia do minut (truncatedTo(ChronoUnit.MINUTES)), i tak otrzymujesz :00 dla sekund.

Aby uzyskać format daty w postaci "2024-06-17T16:15" (bez sekund i milisekund), możesz to osiągnąć na różne sposoby w zależności od
  • Odpowiedz
@mandanda: nie musisz obcinać dat do minut. Nie ma to znaczenia. Potrzebujesz odpowiedni formatter, który ich nie wyświetli. Tylko nie jak wpisał w chatgpt @Milo900, tylko nowy DateTimeFormatter który jest od ósemki.
Format daty sobie zrobisz, jaki chcesz, może nawet emotki wypluwać.
  • Odpowiedz