2017-03-06 55 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。 ,這沒有幫助:( –