将日期转换为XMLGregorianCalendar

时间:2012-02-29 02:36:13

标签: java datetime date

我在UI中有以下格式的日期..

Eg: Thu. 03/01

我将它们转换为XMLGregorianCalendar,如下所述。

final DateFormat format = new SimpleDateFormat("E. M/d");
final String dateStr = closeDate;
final Date dDate = format.parse(dateStr);

GregorianCalendar gregory = new GregorianCalendar();
gregory.setTime(dDate);

XMLGregorianCalendar dealCloseDate = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(gregory);

我的输出是“3/06/70 05:00 AM”而不是“3/06/2011 05:00 AM”。什么是获得适当年份所需的时间。

2 个答案:

答案 0 :(得分:51)

您没有提及有关如何在此日期转换中表示年份的任何内容,但这里有一些伪代码可以帮助您入门。请注意,我没有在此示例中明确处理时区:

final DateFormat format = new SimpleDateFormat("E. M/d");
final String dateStr = "Thu. 03/01";
final Date date = format.parse(dateStr);

GregorianCalendar gregory = new GregorianCalendar();
gregory.setTime(date);

XMLGregorianCalendar calendar = DatatypeFactory.newInstance()
        .newXMLGregorianCalendar(
            gregory);

答案 1 :(得分:0)

我做了以下代码来实现相同的目标。可能是一个冗长的代码,但工作正常。

def gregorianCalendar = new GregorianCalendar()
    def xmlGregorianCalendar = newInstance().newXMLGregorianCalendar(gregorianCalendar)

    if (//past date is needed) {
        def date = xmlGregorianCalendar.toGregorianCalendar().time
        def cal = Calendar.getInstance()
        cal.setTime(date)
        cal.add(Calendar.DATE,-3); //subtract 3 days
        date.setTime(cal.getTime().getTime())
        gregorianCalendar.setTime(date)
        xmlGregorianCalendar =  newInstance().newXMLGregorianCalendar(gregorianCalendar)
    }