2012-07-05 10 views
13

私は新しいDate()オブジェクトを作成します。印刷するデフォルトのタイムゾーンは何になりますか。java.util.Dateのデフォルトのタイムゾーンは何ですか

私のマシンはGMTで動作しています。私は新しいDate()オブジェクトを作成しています。私はなぜそれが表示されます印刷する7月05 08:21:05 PKT 2012.それはどのようにPKTとしてタイムゾーンがかかりますか?

+1

http://stackoverflow.com/q/2891361/1465828 – Aprian

+0

おかげでこのリンクを試してみることができます。しかし、私の質問に答えることはできません – user1182253

+0

他の言語によると、少なくともPythonとObjective-Cの日付はこのデフォルトのタイムゾーンで保存されているため、UTCでなければなりません。 –

答えて

18

日付自体にはタイムゾーンがありません。そのtoString()方法は、この日付を表す文字列を返すために、現在のデフォルトのタイムゾーンを使用しています。私のマシンで上記のコードを実行

Date date = new Date(); 

System.out.println(TimeZone.getDefault()); 
System.out.println(date); 

TimeZone.setDefault(TimeZone.getTimeZone("UTC")); 

System.out.println(TimeZone.getDefault()); 
System.out.println(date); 

は、次の出力につながる:通常

sun.util.calendar.ZoneInfo[id="Europe/Paris",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]] 
Fri Jul 06 09:24:45 CEST 2012 
sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null] 
Fri Jul 06 07:24:45 UTC 2012 
+0

eclipseでは、java.lang.dateはcdate.zoneInfoオブジェクトを示します。私のポーからアクセスできないかもしれないかもしれません。日付には関連するタイムゾーンがあります。これは、異なるタイムゾーンに変換するときに重要な役割を果たします。ソースタイムゾーンを知らなければ、変換はできません。あなたは、 "時間帯の問題はありませんか?" –

+0

@ThomasSにはタイムゾーンの問題はありません " - >一つのこととして、ドキュメンテーションには:... Dateクラスは協定世界時(UTC)を反映することを意図しています... –

3

まあ、実際に基本的な日付時間タイムゾーンには依存しませんが、タイムゾーンは保存しません。タイムゾーンを使用するには、フォーマッター、カレンダーなどを使用します。もちろん、基本日付はデフォルトのタイムゾーン(何時でもGMT)でなければなりません。さもなければ、基本日付インスタンスからローカル日付を作成することができません。

具体的には、JDKは通常java.util.Dateのソースコードで配布されるため、a)javadocsとb)をクラスそのものに組み込むと役立ちます。 javadocによると、java.util.Dateクラスは、「エポック」、すなわち1970年1月1日、00:00:00 GMTと呼ばれる標準ベース時刻からのミリ秒数を表します。

システムに印刷された日付が異なる場合は、システムのタイムゾーンのデフォルトを使用して印刷されるためです。ただし、他のタイムゾーンを使用して自分で印刷することもできます。

3

linuxで動作している場合は、システムのどこかにマジックタイムゾーンファイルがあります。私はgentooのための魔法だけで、コンテンツ

Europe/Berlin 

面白いことがdateが正しい時刻とタイムゾーン(CEST)のすべての時間を与えたが、JavaはGreenwhichに送ってくれたということであると、テキストファイルの/ etc /タイムゾーンを作成していました。

> date 
Thu Sep 18 08:49:14 CEST 2014 
関連する問題