【问题标题】:Date difference in standalone java vs tomcat server独立 java 与 tomcat 服务器的日期差异
【发布时间】:2017-07-26 02:04:50
【问题描述】:

我在将日期转换为 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。我在这里错过了什么吗?,

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

【问题讨论】:

  • 如何检查tomcat版本不转换日期?使用日志?
  • @DmitryGorkovets:是的,我正在将它记录在我的应用程序日志中。
  • date时你的机器什么时候返回? +0+5?
  • @jlordo:第二个代码 sn-p 是我正在谈论的独立 java 程序。它工作正常,但当我在应用服务器上运行时使用相同的方法时它不工作。
  • @SergioLema:在应用服务器上运行时,它返回给我 +0。,返回我通过的确切日期。

标签: java date tomcat utc xmlgregoriancalendar


【解决方案1】:

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

【讨论】:

  • 我认为这不是一个好主意。,如果这是一个实用方法,任何使用此方法的人都必须更新他们的 tomcat 时区。应该有更好的方法来处理这个问题。
  • 仅供参考,这没有帮助:(
猜你喜欢
  • 2018-05-13
  • 1970-01-01
  • 2014-01-11
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 2011-08-23
相关资源
最近更新 更多