2011-10-31 126 views
6

爲什麼當我給GMT時區輸入日期字符串,SimpleDateFormat解析它並輸出EET時區? Java SimpleDateFormat解析後錯誤的時區

public static String DATE_FORMAT="dd MMM yyyy hh:mm:ss z"; 
public static String CURRENT_DATE_STRING ="31 October 2011 11:19:56 GMT"; 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.US); 
    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
    System.out.println(simpleDateFormat.parseObject(CURRENT_DATE_STRING)); 

和輸出是: 週一10月31日13時19分56秒EET 2011 而不是 週一10月31日13時19分56秒格林尼治標準時間2011

回答

10

你打印出的Date.toString()結果。 A Date沒有任何時區的概念 - 這只是UTC Unix時代以來的毫秒數。 Date.toString()總是使用系統默認時區。

請注意,你不應該期待「週一10月31日13點十九分56秒格林尼治標準時間2011」因爲你給了一個時間,指定的11 GMT小時,而不是13

如果你想要使用特定時區進行打印,則應使用另一個DateFormat進行打印,而不要使用Date.toString()。 (Date.toString()不斷造成這樣的混亂;這真的很不幸)。

+0

謝謝,快速回答。 – IgorDiy

相關問題