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

时间:2016-06-21 04:02:38

标签: java

我正在努力进行以下日期转换。

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

预计日期:1月3日上午7:00 GMT + 8:00 实际日期:1月5日0001 GM 00T + 8:00 AM。

    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();
    }
}

请你帮帮我吗?提前谢谢。

2 个答案:

答案 0 :(得分:5)

正如this answer中所述,您的日历正在转移,因为您已将年份指定为1,这意味着它已超出GregorianCalendar并进入朱利安日历,{ {1}}不支持。

只需使用XMLGregorianCalendar来解决此问题。

答案 1 :(得分:0)

在您的代码中尝试此操作

#out1 {
  width: calc(100% - 150px);
  font-style: normal;
  font-weight: bold;
  font-size: 28px;
  white-space: pre-wrap;
  background-color: gray;
  padding: 25px;
  border: 25px solid navy;
  margin-left: auto;
  margin-right: auto;
  box-shadow: 0 8px 16px white;
}