java.text.ParseException: Непарсируемая дата "Пт 12 сентября 23:22:46 IST 2014"
Я использую средство отображения Джексона для непосредственного сопоставления запроса json с объектом java. Чтобы отобразить дату я использую CustomDateSerializer и CustomDateDeSerializer в геттер и сеттер соответственно.
public class CustomJsonDateSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String dateString = simpleDateFormat.format(date);
jsonGenerator.writeString(dateString);
}
}
public class CustomJsonDateDeserializer extends JsonDeserializer<Date> {
@Override
public Date deserialize(JsonParser jsonparser,
DeserializationContext deserializationcontext) throws IOException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String date = jsonparser.getText();
try {
return format.parse(date);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
мой геттер и сеттер в модели
@JsonSerialize(using=CustomJsonDateSerializer.class)
public Date getBirthDate() {
return birthDate;
}
@JsonDeserialize(using = CustomJsonDateDeserializer.class)
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
Исключение:
Could not read JSON: java.text.ParseException: Unparseable date: "Fri Sep 12 23:22:46 IST 2014"
Может ли кто-нибудь помочь мне исправить это..
3 ответа
Решение
Формат, который вы определили:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Тем не менее, похоже, что формат, который он ожидает, не тот же (пт 12 сентября 23:22:46 IST 2014).
Это должно быть как:
SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd hh:mm:ss Z yyyy",Locale.ENGLISH);
Проверьте документы Oracle для SimpleDateFormat
+ Изменить
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
в
SimpleDateFormat dF=new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy",Locale.ENGLISH);
Изменено изменение формата даты: "EEE MMM dd HH:mm:ss Z yyyy"