杰克逊日期时间模式没有正确显示时区

时间:2016-02-04 12:16:31

标签: java xml jackson

我的课程:

@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssZ", timezone="UTC")
protected XMLGregorianCalendar dateTime;

我的日期实例:

XMLGregorianCalendar dateTime = DatatypeFactory.newInstance().newXMLGregorianCalendar("2013-04-10T15:27:37+01:00");
obj.setDateTime(dateTime);

翻译:

ObjectMapper xmlMapper = new XmlMapper();
xmlMapper.setSerializationInclusion(Include.NON_NULL);
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + xmlMapper.writeValueAsString(object);

输出:

<DateTime>2013-04-10T14:27:37+0000</DateTime>

预期产出:

<DateTime>2013-04-10T15:27:37+01:00</DateTime>

为什么时区和时区格式会在翻译中丢失?

1 个答案:

答案 0 :(得分:1)

您正在将Jackson的时区设置为UTC。请参阅您的注释:@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssZ", timezone="UTC")
我认为输出正是您所期望的,因为UTC具有timezoneoffset +0000