Дата анализа с необязательным компонентом времениJAVA

Программисты JAVA общаются здесь
Anonymous
Дата анализа с необязательным компонентом времени

Сообщение Anonymous »

Связано: ненадежный внешний API, не отвечает владелец
Есть ли элегантный способ сделать его более гибким, чтобы Date успешно анализировался независимо от того, является ли это гггг-ММ-дд чч:мм:сс или гггг-ММ-дд?
Желательно, не пробуя несколько форматов и не обрабатывая исключения.

Код: Выделить всё

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

public class DateTimeFormatDeserializer extends JsonDeserializer{

@Override
public Date deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
if (jp.getCurrentToken() == JsonToken.VALUE_STRING) {
String str = jp.getText().trim();
if (str.length() == 0) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = sdf.parse(str);
return date;
} catch (ParseException e) {
throw new RuntimeException("Cannot convert string '" + str +"' to Date (yyyy-MM-dd HH:mm:ss)");
}
}
return null;
}

}
Java 8, Jackson 2.13.2.2, Spring 5.3.18.

Вернуться в «JAVA»