vitya_brodov
@vitya_brodov
Java dev

Как правильно задать паттерн для даты в java?

У меня есть LocalDateTime, который задается в формате: 2021-08-18T00:48:02.4089693
Как можно чтобы он принимал только в паттерне: год/месяц/день час/минут?
  • Вопрос задан
  • 376 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
Ну, допустим, я что-то понял (я же эксперт))...

Можно задавать формат даты в джейсоне таким образом:

1. Пишем свой конвертер.
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.TypeFactory;
import com.fasterxml.jackson.databind.util.Converter;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

import static org.apache.http.util.TextUtils.isBlank;

public class CustomStringToLocalDateTimeConverter implements Converter<String, LocalDateTime> {

    @Override
    public LocalDateTime convert(String value) {
        if (isBlank(value)) return null;
        var formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;  // Вот тут задается формат даты
        return LocalDateTime.parse(value, formatter);
    }

    @Override
    public JavaType getInputType(TypeFactory typeFactory) {
        return typeFactory.constructType(String.class);
    }

    @Override
    public JavaType getOutputType(TypeFactory typeFactory) {
        return typeFactory.constructType(LocalDateTime.class);
    }
}


2. Добавляем аннотацию над нужным полем:
class WithDate {
    @JsonDeserialize(converter = CustomStringToLocalDateTimeConverter.class)
    private LocalDateTime startTime;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
Bell Integrator Ульяновск
До 400 000 ₽
07 мая 2024, в 23:32
1200 руб./в час
07 мая 2024, в 23:27
1000 руб./за проект
07 мая 2024, в 22:37
25000 руб./за проект