我正在运行一个代码,使用Gson转换器与简单的日期格式功能,并在一段时间内,日期格式化是弄乱无论是显示日期早在1969年至1970年取决于时区或它需要它并显示一些随机日期。Gson转换器与SimpleDateFormat
static class DateSerializer implements JsonDeserializer<Date> {
@Override
public Date deserialize(JsonElement jsonElement, Type typeOF, JsonDeserializationContext context)
throws JsonParseException {
for (SimpleDateFormat simpleDateFormat : DATE_FORMATS) {
try {
simpleDateFormat.setLenient(true);
return simpleDateFormat.parse(jsonElement.getAsString());
} catch (ParseException e) {
}
}
return null;
}
}
static {
final TimeZone GMT_TIMEZONE = TimeZone.getTimeZone("GMT");
int i = 0;
for (String format : DATE_FORMAT_STRINGS) {
SimpleDateFormat dateFormat = new SimpleDateFormat(format, Locale.US);
dateFormat.setTimeZone(GMT_TIMEZONE);
DATE_FORMATS[i++] = dateFormat;
}
}
Gson gson = new GsonBuilder()
.registerTypeAdapter(Date.class, new DateSerializer())
.create();
private static final String[] DATE_FORMAT_STRINGS = new String[]{"yyyy-MM-dd'T'HH:mm:ssZZZZ",
"yyyy-MM-dd'T'HH:mm:ss'Z'"};
问题仍然发生没有setLenient –