Ответ 1
Этот настраиваемый сериализатор/десериализатор может обрабатывать несколько форматов. Сначала вы можете попробовать разбор в одном формате, а затем, если это не удается, попробуйте второй формат. Это также должно обрабатывать нулевые даты без раздувания.
public class GsonDateDeSerializer implements JsonDeserializer<Date> {
...
private SimpleDateFormat format1 = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a");
private SimpleDateFormat format2 = new SimpleDateFormat("HH:mm:ss");
...
@Override
public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
try {
String j = json.getAsJsonPrimitive().getAsString();
return parseDate(j);
} catch (ParseException e) {
throw new JsonParseException(e.getMessage(), e);
}
}
private Date parseDate(String dateString) throws ParseException {
if (dateString != null && dateString.trim().length() > 0) {
try {
return format1.parse(dateString);
} catch (ParseException pe) {
return format2.parse(dateString);
}
} else {
return null;
}
}
}
Надеюсь, что это поможет, удачи в вашем проекте.