грешка в java.util.date?

Има ли грешка java.util.Date? Докато правех някои тестове, настройвах милисекундите на 2147483647, което трябва да ми даде дата 2038-01-19 03:14:07, но се връща 1970-01-25 20:31:23. Опитах и ​​с 4294967295 и получих грешен отговор от 1970-02-19 17: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


person user2097530    schedule 22.02.2013    source източник


Отговори (1)


2147483647 милисекунди е само около 24,8 дни, затова се показва като 1970-01-25 20:31:23.

4294967295 милисекунди е само около 49,7 дни, затова се показва като 1970-02-19 17:02:47.

Може да изчислявате това, което очаквате въз основа на 2147483647 секунди вместо на милисекунди. Това не е грешка в java.util.Date; преобразувайте стойността си за секунди в милисекунди, като умножите по 1000.

person rgettman    schedule 22.02.2013
comment
Това е точно неговият проблем - тези стойности съответстват на секунди, предвид неговите (желани) времеви отпечатъци. - person Clockwork-Muse; 22.02.2013
comment
Благодаря... Блъсках си главата в стената, опитвайки се да предам c++ time_t в java.util.Date. След като направих сметката, както предложихте, всичко работи. - person user2097530; 22.02.2013