在将XMLGregorianCalendar转换为GregorianCalendar期间更改日期

Edm*_*ang -4 java

我正在努力与以下日期转换.

原始日期:1月2日0001 18:00 GMT-5:00.

预计日期:1月3日0001 GMT + 8:00 AM.
实际日期:格林尼治标准时间1月5日上午7:00 + 8:00.

    public static void main(String[] args) {
    XMLGregorianCalendar xmlC;
    try {
        xmlC = DatatypeFactory.newInstance().newXMLGregorianCalendar();
        xmlC.setYear(1);
        xmlC.setMonth(1);
        xmlC.setDay(2); // It is Jan 2!!
        xmlC.setHour(18);
        xmlC.setMinute(0);
        xmlC.setSecond(0);
        xmlC.setMillisecond(0);
        xmlC.setTimezone(-300);
        GregorianCalendar gC = xmlC.toGregorianCalendar();
        System.out.println(gC.getTime()); // Actual output: Wed Jan 05 07:00:00 CST 1
    } catch (DatatypeConfigurationException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

拜托,请你帮忙吗?先感谢您.

Ros*_*iar 5

正如在这个答案中所解释的那样,你的日历正在被移动,因为你已经指定了你的年份1,这意味着它不属于GregorianCalendar朱利安日历,XMLGregorianCalendar而不支持.

只需xmlC.setYear(2016);用来解决这个问题.