如何在XMLGregorianCalendar中减去一天?同时减去如何应对以下问题:
在该月的第一天,它不会变为负值
如果是一年的1月1日,它需要回到正常的一年
和其他类似的东西.
请不要建议使用像Joda-Time这样的任何其他库.我知道它们很棒,但我只需要使用XMLGregorianCalendar来完成它.
谢谢
只需转换为正常GregorianCalendar
,在那里做算术,然后转换回:
GregorianCalendar calendar = xmlCalendar.toGregorianCalendar(); calendar.add(Calendar.DAY_OF_MONTH, -1); xmlCalendar = datatypeFactory.newXMLGregorianCalendar(calendar);
(这假设您已经拥有了DatatypeFactory
.DatatypeFactory.newInstance()
如果有必要,您可以随时致电.)
XMLGregorianCalendar
有一个add(Duration)
方法,您也可以用于此计算,而无需转换为GregorianCalendar
第一个.这是一个例子:
DatatypeFactory df = DatatypeFactory.newInstance(); XMLGregorianCalendar calendar1 = ...; XMLGregorianCalendar calendar2 = (XMLGregorianCalendar) calendar1.clone(); calendar2.add(df.newDuration("-P1D"));