vitya_brodov
@vitya_brodov
Java dev

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

У меня есть LocalDateTime, который задается в формате: 2021-08-18T00:48:02.4089693
Как можно чтобы он принимал только в паттерне: год/месяц/день час/минут?
  • Вопрос задан
  • 412 просмотров
Решения вопроса 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;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 22:26
3500 руб./за проект
22 нояб. 2024, в 21:47
3000 руб./за проект
22 нояб. 2024, в 21:44
50000 руб./за проект