0

ローカル タイムゾーンに合わせてエポック タイムを調整しようとしています (つまり、GMT-7 ですが、GMT が表示されます)。私はこれがうまくいくはずだと確信していますが、そうではありません...

Calendar localTime = new GregorianCalendar(TimeZone.getDefault());
Date dd = localTime.getTime();
long t = dd.getTime()/1000; 
System.out.printf("%d\n",t);

ただし、GMT-7(私のタイムゾーン)ではなく、GMTに基づいてエポック時間を出力します。しばらく遊んだ後、私はこれを機能させました...

Date ddd = new Date();
long t = ddd.getTime() + TimeZone.getDefault().getOffset( ddd.getTime() );
t = t/1000;

しかし、なぜ最初のブロックが機能しないのでしょうか?

4

1 に答える 1

0

オブジェクトは、エポックからのDateUTC 時間をミリ秒単位で単純にラップします。これは、Java ですべての時間を「ボンネットの下」で表現する方法です。これにより、作業の一貫性も保たれます。何かを印刷したいときはいつでも、TimeZone オフセットと DST オフセットをそれに適用します。

これが、クラスが TimeZone を受け入れる理由ですが、SimpleDateFormatクラスに TimeZone セッターがありませんDate

必須: Joda Timeは datetime API を使用する方がはるかに簡単だと聞いたことがあります。

また、Java の標準の日付と時刻のライブラリに関するこの投稿もご覧ください。

于 2011-09-20T09:18:56.217 に答える