在XMLGregorianCalendar中减去一天

时间:2016-01-07 08:11:54

标签: java datetime

如何在XMLGregorianCalendar中减去一天? 同时减去如何解决以下问题:

  • 在该月的第一天不会出现负值
  • 如果是一年的1月1日,需要回到正常年份

和其他类似的东西。

请不要建议使用像Joda-Time这样的任何其他库。我知道它们很棒,但我只需要使用XMLGregorianCalendar来完成它。

由于

2 个答案:

答案 0 :(得分:5)

只需转换为普通DateTime?,在那里进行算术运算,然后转换回来:

GregorianCalendar

(假设您已经有GregorianCalendar calendar = xmlCalendar.toGregorianCalendar(); calendar.add(Calendar.DAY_OF_MONTH, -1); xmlCalendar = datatypeFactory.newXMLGregorianCalendar(calendar); 当然。如有必要,您可以随时致电DatatypeFactory。)

答案 1 :(得分:5)

XMLGregorianCalendaradd(Duration)方法,您也可以将其用于此计算,而无需先转换为GregorianCalendar。这是一个例子:

DatatypeFactory df = DatatypeFactory.newInstance();
XMLGregorianCalendar calendar1 = ...;
XMLGregorianCalendar calendar2 = (XMLGregorianCalendar) calendar1.clone();
calendar2.add(df.newDuration("-P1D"));