2

java.util.Dateにバグはありますか?いくつかのテストを行っている間、ミリ秒を2147483647に設定していました。これにより、日付は2038-01-19 03:14:07になりますが、1970-01-2520:31:23が返されます。また、4294967295で試してみたところ、1970-02-1917:02:47という間違った答えが返ってきました。誰かが回避策を知っていますか

import java.util.*;
import java.io.*;


/*
centos 6.3 x64
java version "1.7.0_13"
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
*/


public class Test
{
   static public void main(String args[])
   {
      long ms = 2147483647L;

      java.util.Date d = new java.util.Date( ms );

      java.text.SimpleDateFormat df = new java.text.SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
      // SHOULD be 2038-01-19 03:14:07
      System.out.println( df.format( d ) );         

      System.out.println(df.format(new Date(Long.MAX_VALUE)));

      System.out.println( "\n" + ms );
      System.out.println( Long.MAX_VALUE );
   }
}

1970-01-25 20:31:23 292278994-08-17 07:12:55

2147483647 9223372036854775807

4

1 に答える 1

12

2147483647ミリ秒は約24。8日であるため、1970-01-2520:31:23と表示されます。

4294967295ミリ秒は約49。7日であるため、1970-02-1917:02:47と表示されます。

ミリ秒ではなく2147483647秒に基づいて期待値を計算している可能性があります。これはjava.util.Dateのバグではありません。1000を掛けて、秒の値をミリ秒に変換します。

于 2013-02-22T00:07:28.240 に答える