000Z时区的日历问题

时间:2013-04-19 13:07:30

标签: java calendar dozer

我遇到了Java Calendar的奇怪情况。我正在使用推土机映射器来映射对象。

我的要求是我得到了一个只接受日历类型的XML架构元素

说元素<expDtTime>2010-11-11T09:30:47.000Z</expDtTime>

我必须转换它。我写了以下转换器:

public Calender m(Date source,Calender c) {
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.setTime(source);
return calendar;
}

我需要它采用相同的格式。但它显示为

<expDtTime>2010-11-11T04:00:47.000Z</expDtTime>

我希望我的对象具有相同的格式和值。它显示时间是凌晨4点。

有没有办法摆脱这个问题?

非常感谢任何建议或帮助。

提前致谢

1 个答案:

答案 0 :(得分:0)

对于使用XML dateTime的操作,请使用javax.xml.datatype包中的XMLGregorianCalendar。

从字符串解析

XMLGregorianCalendar xgc = DatatypeFactory.newInstance().newXMLGregorianCalendar("2010-11-11T04:00:47.000Z");
GregorianCalendar gc = xgc.toGregorianCalendar();

从GregorianCalendar转换

XMLGregorianCalendar xgc = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);

格式为XML dateType字符串

 String xmlDate = xgc.toString();