2017-03-06 58 views
0

我有问题将日期转换为UTC,我可以在独立的java程序中获得此工作,但是,在服务器上运行相同的方法时,会给我一个不同的方法时间戳。独立的java与tomcat服务器的日期差异

这里是我需要将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上运行上述方法。它将时间戳转换为UTC,通过时间加上5个小时。

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。我在这里错过了什么,

有人可以帮助我这个。提前致谢。

+0

你如何核查Tomcat版本不转换日期?使用日志? –

+0

@DmitryGorkovets:是的,我将它记录在我的应用程序日志中。 –

+0

您的机器在'日期'时什么时候返回? “+ 0”或“+ 5”? –

回答

0

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

+1

我认为这不是一个好主意。如果这是一种实用方法,任何使用这种方法的人都必须更新它们的tomcat时区。 应该有更好的方法来处理这个问题 –

+0

FYI。 ,这没有帮助:( –