2012-03-26 12 views
11

私は次のコードを持っています。私の目標はGMT+0ミリ秒単位で返されます。しかし、なぜ私はいつもローカルのタイムゾーンミリ秒を取得するのですか? Java:異なるタイムゾーンがミリ秒単位で同じ値を返す理由

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 
Calendar cal2 = Calendar.getInstance(); 
System.out.println("Time zone id is:"+cal.getTimeZone().getID()+";time in millisec:"+cal.getTimeInMillis()); 
System.out.println("Time zone id is:"+cal2.getTimeZone().getID()+";time in millisec:"+cal2.getTimeInMillis()); 

出力がある
タイムゾーンIDは、次のとおりです。GMT;ミリ秒の時間: 1332740915154
タイムゾーンIDがある:ヨーロッパ/ヘルシンキ、ミリ秒の時間: 1332740915154

なぜ異なるタイムゾーンのギブ同じ値(ミリ秒単位)ですか?
GMT+0の場合は、現地時間帯とは異なる値であるはずです。

+0

システムのタイムゾーンとは何ですか? – sgowd

+0

System.currentTimeMillis();についてはどうですか? – user84592

+0

私のタイムゾーンはGMT + 2で、夏時間は – user84592

答えて

21

なぜ異なるタイムゾーンがミリ秒単位で表示されるのですか?

は、を意味します。ドキュメントから:

(エポックからの現在の時間(ミリ秒))(戻り値)言い換えれば

、それはgetTimeによって返さDateにあるであろう価値だ - それは、タイムゾーンに依存しません。あなたはタイムゾーンに依存する値をしたい場合は、タイムゾーンおよびカレンダーシステムの両方から独立して、カレンダー、内の時間にCalendar.Get(Calendar.YEAR)など

インスタントを表す両方Calendar.getTime()Calendar.getTimeInMillis()戻り値を使用します。

+0

私の疑問は、タイムゾーンがミリ秒であるか、要求されたタイムゾーンだけを与えるのでしょうか? – sgowd

+0

@ sans481:あなたが何を求めているのかわかりません、私は恐れます - あなたはその質問を言い換えることができますか? –

+0

私は、「現在の時刻をエポックからUTCミリ秒で返す」というものを正確に取得していません。 – sgowd

6

JavaのDateオブジェクトのmillisecは、GMT+0 1970/01/01 00:00:00からわずかミリ秒です。タイムゾーンとは独立しています。タイムゾーンは、Dateを読み込み可能な文字列にフォーマットするためのプロパティです。

+0

です。それは本当にタイムゾーンの対象ではありません。それはカレンダーのためのものです。タイムゾーンは、UTCと現地時間の間で変換されます。 –

1

getTimeInMillis()メソッドは、エポックからUTCミリ秒単位で現在の時刻を返します。したがって、両方のカレンダーオブジェクトが異なるタイムゾーンを持っていても、同じミリ秒が得られます。

関連する問題