我在将日期转换为 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。我在这里错过了什么吗?
有人可以帮我解决这个问题。提前致谢。