2011-07-22 16 views
0

Javaの日付変換に少し問題があります。私は19700101をSimpleDateFormatに入れ、getTimeを呼び出すと-3600000が得られます。Java SimpleDateFormatと19700101変換の問題

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); 
Date date = dateFormat.parse("19700101"); 
System.out.println(date.getTime()); 
System.out.println(dateFormat.format(new Date(0))); 
System.out.println((new Date(0)).getTime()); 

結果は次のようになります:私は、テストを書く

0 
19700101 
0 

しかし、私は-3600000(20Nov1969)を返してSimpleDateFormatなぜ私の質問がある

-3600000 
19700101 
0 

を得ましたか。書式設定と変換に関するバグに関する情報はどこで入手できますか?

+0

try 'dateFormat.setTimeZone(TimeZone.getTimeZone(" UTC "));' –

答えて

8

あなたはどのタイムゾーンを使用していましたか?私の推測では、あなたはGMT + 1を使っていました。タイムゾーンを "GMT"に設定すると、予想される結果が得られます。

CEST(GMT + 1)のようなデフォルトのタイムゾーンを使用しています。 1970/01/01または00:00:00.000 CESTは1970/01/01または-3600000 msから-1hの1969/12/31 23:00:00.000 GMTでした。

+0

が正常に動作します。なぜ? –

+0

私は私の答えに追加しました。 –