Jackson JSON-反序列化时从Calendar对象中剥离时区



我有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对象将始终具有时区和区域设置。

最新更新