1

JavaDateクラスを使用していくつかの日付をフォーマットしようとしています。以前の計算で得た長い値がいくつかあります。日付のフォーマットを開始する前に、longのリストがあります。それらは次のとおりです。

-12345
0
12345

私はこのようないくつかの基本的なフォーマットを行います...

 DateFormat df = new SimpleDateFormat("dd/MMM/yyyy HH:mm:ss");
 String formattedDate = df.format(new Date(dateNumber.longValue())); 

Javaは1970年の初めをベースとして使用しているので、私の期待される出力は次のようになります。

31/Dec/1969 23:59:47
01/Jan/1970 00:00:00
01/Jan/1970 00:00:12

しかし、私が実際に得ている出力は

31/Dec/1969 18:59:47
31/Dec/1969 19:00:00
31/Dec/1969 19:00:12

12月31日と1月1日の間で分割されるのではなく、なぜそれらがすべて12月31日になるのか、少し混乱しています。リストの2番目の2つの数字が正であるため、日付が以前の日付になる理由がわかりません。 1970年。誰かが基本的なJavaライブラリを使用してこれを手伝ってくれるなら、私はそれを大いに感謝します。

4

3 に答える 3

3

データ形式オブジェクトの timeZone を GMT に設定できます。

df.setTimeZone(TimeZone.getTimeZone("GMT"));

そして、あなたはあなたが望んでいたものを手に入れるはずです。タイムスタンプは「1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数」を表し、現在のタイムゾーンでは結果が異なります。

于 2012-12-08T15:52:31.770 に答える
1

タイムゾーンには注意が必要です。あなたは米国東部時間のようです。日付は UTC を想定しています。印刷するときは、東部標準時間で印刷しているため、5 時間遅れています。

于 2012-12-08T15:38:29.060 に答える