2011-07-18 172 views
5

我對Java很新,我有點堅持使用SimpleDateFormatCalendar。我有一個日期對象,並且想要提取GMT日期字符串,如yyyy-MM-dd HH:mm:ss。我住在德國,目前我們是格林威治標準時間+0200。我的日期 - 對象的時間是例如2011-07-18 13:00:00。我現在需要的是2011-07-18 11:00:00。我的時區的偏移量應該自動計算。轉換GMT日期時間字符串

我想這樣的事情,但我想有一個錯誤的地方:

private String toGmtString(Date date){ 
    SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    TimeZone timeZone = TimeZone.getDefault(); 
    Calendar cal = Calendar.getInstance(new SimpleTimeZone(timeZone.getOffset(date.getTime()), "GMT")); 
    sd.setCalendar(cal); 
    return sd.format(date); 
} 

在某些設備上像我希望它返回datestring。在其他設備上,偏移量計算不正確,我從輸入日期對象中收到日期和時間。你能給我一些提示或建議嗎?我想我得到默認時區的方式不起作用?

回答

5
private String toGmtString(Date date){ 
    SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    sd.setTimeZone(TimeZone.getTimeZone("GMT")); 
    return sd.format(date); 
} 

你並不需要創建一個新的SimpleTimeZone,因爲你不是發明一種新的時區 - 有一些開始發揮作用,在你的程序中,格林尼治標準時間2個時區的現有和默認的一個。

您也不需要修改您的現有日期對象,因爲您不想表示不同的時間點 - 您只需要一種不同的方式來顯示相同​​的時間點。

您需要做的就是告訴SimpleDateFormat要格式化哪個時區。

+0

我不敢相信這很容易,但我當然也會嘗試。請給我幾分鐘的時間... – Marco

+0

好的..測試..我用了一個代表'2011-07-18 13:34:27'的日期對象。使用默認的日期函數'.toGMTString()'我收到'18 Jul 2011 11:43:27 GMT'這是我需要的確切時間點。使用我自己的函數,我仍然收到'2011-07-18 13: 43:27'這是我的問題。使用Jigar Joshin的功能,我收到'2011-07-18 12:43:27',這是缺少1小時(歐洲夏令時)。使用Eli Acherkans功能,我收到了'2011-07-18 11:43:27',這正是我想要的(偏移包括歐洲夏令時)。 – Marco

+0

+1 <!--------------> –

2
private String toGmtString(Date date){ 
    //date formatter 
    SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    //getting default timeZone 
    TimeZone timeZone = TimeZone.getDefault(); 
    //getting current time 
    Calendar cal = Calendar.getInstance() 
    cal.setTime(date) ; 
    //adding/substracting curren't timezone's offset 
    cal.add(Calendar.MILLISECOND, -1 * timeZone.getRawOffset());  
    //formatting and returning string of date 
    return sd.format(cal.getTime()); 
} 
+0

好吧,這看起來不錯。我會在幾分鐘內嘗試一下。一個問題。你在哪裏以及如何使用函數調用的日期參數?!我應該在獲取實例後使用'cal.setTime(date);' – Marco

+0

是的。更新它。 –

+0

不錯!作品!非常感謝你! – Marco

相關問題