我有jackson反序列化程序,可以将json字符串中的日期转换为日历对象。我在请求中传递"2015-10-22",在我将其转换为日历对象后,它被转换为"2015-10-22-04:00"。有没有办法阻止发送时区?在使用XMLGregorianCalendar的场景中,我使用"date.setTimezone(DatatypeConstants.FIELD_UDEFINED)"来抑制时区。
private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
@Override
public Calendar deserialize(JsonParser jsonparser, DeserializationContext arg1) throws IOException, JsonProcessingException {
// TODO Auto-generated method stub
String dateString = jsonparser.getText();
try {
Calendar calendar = Calendar.getInstance();
calendar.setTime(formatter.parse(dateString));
return calendar;
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
没有发送时区,所以问题"有没有办法阻止发送时区?"是没有意义的。
Calendar.getInstance()
方法分配一个默认时区,请参阅javadoc:
获取使用默认时区和区域设置的日历。返回的
Calendar
基于具有默认区域设置的默认时区中的当前时间。
然后将"当前时间"替换为对setTime()
的调用,但时区和区域设置保持不变。
Calendar
对象将始终具有时区和区域设置。