2016-02-04 78 views
0

我的类:杰克逊日期时间模式不显示时区正确

@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

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

+0

我需要做些什么才能使它成为“'+01:00'”? – Hooli

+0

将时区属性更改为您期望的时区。 +0100会是某种CET(例如欧洲/柏林或巴黎) – Abbel

+0

缺少':'怎么办? – Hooli