如何在XMLGregorianCalendar中減去一天? 也同時減去如何與以下問題應付起來:在XMLGregorianCalendar中減去一天
- 它不進入負值本月
- 的第一天的情況下,在一年的1月1日的情況下,它需要的地方回到前一年
和其他類似的東西。
請不要建議使用任何其他類似Joda-Time的圖書館。我知道他們很棒,但我只需要使用XMLGregorianCalendar來完成這個任務。
感謝
如何在XMLGregorianCalendar中減去一天? 也同時減去如何與以下問題應付起來:在XMLGregorianCalendar中減去一天
和其他類似的東西。
請不要建議使用任何其他類似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
冷杉ST。這裏有一個例子:
DatatypeFactory df = DatatypeFactory.newInstance();
XMLGregorianCalendar calendar1 = ...;
XMLGregorianCalendar calendar2 = (XMLGregorianCalendar) calendar1.clone();
calendar2.add(df.newDuration("-P1D"));
這會照顧所有潛在的擔心月份和年份的變化? @Jon Skeet – sam100rav
@ sam100rav:是的。您可能想明確指定時區。 –
最初,xmlGregorianCalendar在其中設置了時區,但在轉換之後還必須重新設置時區嗎? – sam100rav