请注意java.util.Calendar使用基于0的月份编号,而XMLGregorianCalendar使用基于1的月份编号。
我使用下面的代码将javautil日期转换为XML gregorian日历日期,但转换是在日期中添加时区。
GregorianCalendar gregorianCalendar = new GregorianCalendar();
gregorianCalendar.setTimeInMillis(dte.getTime());
XMLGregorianCalendar xmlGrogerianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar);
return xmlGrogerianCalendar;
我不希望时区成为约会的一部分。有人能指出我该如何做到这一点吗?
您可以更改时区,使其未定义。未定义的字段(在合理范围内)将不会包含在输出中。
XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar);
xmlGregorianCalendar.setTimezone( DatatypeConstants.FIELD_UNDEFINED );
您可以尝试单独设置字段
GregorianCalendar gregorianCalendar = new GregorianCalendar();
gregorianCalendar.setTimeInMillis(System.currentTimeMillis());
try {
XMLGregorianCalendar xmlGrogerianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar();
xmlGrogerianCalendar.setYear(gregorianCalendar.get(GregorianCalendar.YEAR));
xmlGrogerianCalendar.setMonth(gregorianCalendar.get(GregorianCalendar.MONTH));
xmlGrogerianCalendar.setDay(gregorianCalendar.get(GregorianCalendar.DAY_OF_MONTH));
xmlGrogerianCalendar.setHour(gregorianCalendar.get(GregorianCalendar.HOUR_OF_DAY));
xmlGrogerianCalendar.setMinute(gregorianCalendar.get(GregorianCalendar.MINUTE));
xmlGrogerianCalendar.setSecond(gregorianCalendar.get(GregorianCalendar.SECOND));
System.out.println(xmlGrogerianCalendar.toXMLFormat() );
} catch (DatatypeConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
GregorianCalendar gregorianCalendar = new GregorianCalendar();
gregorianCalendar.setTimeInMillis(new Date().getTime());
XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar();
xmlGregorianCalendar.setYear(gregorianCalendar.get(GregorianCalendar.YEAR));
xmlGregorianCalendar.setMonth(gregorianCalendar.get(GregorianCalendar.MONTH) + 1);
xmlGregorianCalendar.setDay(gregorianCalendar.get(GregorianCalendar.DAY_OF_MONTH));
System.out.println(xmlGregorianCalendar);
2021-08-04