0

我在将日期转换为 UTC 时遇到问题,我可以在独立的 java 程序上运行它,但是,在服务器上运行相同的方法时,我会得到不同的时间戳。

这是我将字符串日期转换为 UTC 格式的 XMLGregorianCalendar 的方法。

public static XMLGregorianCalendar convertDateToXMLGregorianCalendarInUTC(String date, String dateFormat) throws ParseException, DatatypeConfigurationException {
    if (StringUtils.isBlank(date))
        return null;
    TimeZone timeZoneInUTC = TimeZone.getTimeZone("GMT0:00");
    GregorianCalendar gregorianCalendar = new GregorianCalendar(timeZoneInUTC);
    DateFormat dateFormat = new SimpleDateFormat(dateFormat);
    Date dateUtil = null;
    XMLGregorianCalendar xmlGregorianCalendar = null;

    dateUtil = dateFormat.parse(date);
    gregorianCalendar.setTime(dateUtil);        
    xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar);

    return xmlGregorianCalendar;
}

当我在standAlone java prog上运行时使用上述方法。它通过在过去的日期上增加 5 小时来将时间戳转换为 UTC。

public static void main(String[] args) throws ParseException, DatatypeConfigurationException { 

    System.out.println("DateUtil xmlGC in UTC: "+DateUtil.convertDateToXMLGregorianCalendarInUTC("03/06/2017 05:47:37", "MM/dd/yyyy HH:mm:ss"));

}

输出DateUtil xmlGC in UTC: 2017-03-06T10:47:37.000Z.

但是,在同一台机器上的 tomcat - 应用程序服务器上使用相同的方法时,它不会将日期转换为 UTC。我在这里错过了什么吗?

有人可以帮我解决这个问题。提前致谢。

4

1 回答 1

0

设置 Tomcat 时区 -Duser.timezone=GMT+05

于 2017-03-06T09:40:21.983 回答