2013-01-07 131 views
2

我試圖用for循環和增加一個Date對象來打印當天的所有小時。 但我不能有「太陽報03月25日02:00:00」,我只有這些:Java日期和夏令時

Sun Mar 25 01:00:00 CET 2012 
Sun Mar 25 03:00:00 CEST 2012 
Sun Mar 25 03:00:00 CEST 2012 
Sun Mar 25 04:00:00 CEST 2012 
Sun Mar 25 05:00:00 CEST 2012 

我不感興趣,在具有時區。 我認爲問題是由於夏令時,但我需要「Sun 3月25日02:00:00」。 我該如何創建該日期?

+0

你需要時區,我相信只有美國人關心夏令時。 – Woot4Moo

+0

'但我需要「Sun 3月25日02:00:00」。我該如何創建該日期?'爲什麼不直接打印該字符串?該日期在所有時區都不存在。 – Falmarri

+0

我必須將Date ojbect傳遞給一個不關心時區的函數。 – tyranitar

回答

4

您可能需要爲UTC設置的DateFormat對象(不遵守夏令時),使用設置爲UTC的日曆也可以簡化相當多的事情。

public static void main(String[] args) { 
    TimeZone utc = TimeZone.getTimeZone("UTC"); 
    Calendar date = Calendar.getInstance(utc); 
    DateFormat format = DateFormat.getDateTimeInstance(); 
    format.setTimeZone(utc); 
    date.set(2012, 02, 24, 23, 00, 00); 
    for (int i = 0; i < 10; i++) { 
     System.out.println(format.format(date.getTime())); 
     date.add(Calendar.HOUR_OF_DAY, 1); 
    } 
} 

這提供了以下的輸出:

Mar 24, 2012 11:00:00 PM 
Mar 25, 2012 12:00:00 AM 
Mar 25, 2012 1:00:00 AM 
Mar 25, 2012 2:00:00 AM 
Mar 25, 2012 3:00:00 AM 
Mar 25, 2012 4:00:00 AM 
Mar 25, 2012 5:00:00 AM 
Mar 25, 2012 6:00:00 AM 
Mar 25, 2012 7:00:00 AM 
Mar 25, 2012 8:00:00 AM 

當然,你可以使用格式來格式化你的約會,只要你喜歡。

0

Calendar類允許您在轉換Date值時指定時區。請參閱​​