将Java.util日期转换为不带时区的XML日期



我使用下面的代码将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();
}
请注意java.util.Calendar使用基于0的月份编号,而XMLGregorianCalendar使用基于1的月份编号。
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

最新更新