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

我的要求是我得到一个XML模式元素,该元素仅接受Calendar类型,

说元素<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:00。

有什么办法可以摆脱这个问题?

任何建议或帮助将不胜感激。

提前致谢

最佳答案

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

从字符串解析

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


转换为公历

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


格式化为XML dateType字符串

 String xmlDate = xgc.toString();

08-06 05:54