2012-05-28 9 views
6

He intentado esto utilizando JodaTime DateTime,DateTime está dando resultado inesperado

DateTime dateTime = DateTime 
      .parse("1-JAN-1900", DateTimeFormat.forPattern("dd-MMM-yyyy")) 
      .plusSeconds(2075866000); 
    String dateTimeStr = DateTimeFormat.forPattern(
      "yyyy/MM/dd HH:mm:ss").print(dateTime); 
    System.out.println(dateTimeStr); 

También he intentado usar JodaTime MutableDateTime

MutableDateTime dateTime = MutableDateTime 
      .parse("1-JAN-1900", DateTimeFormat.forPattern("dd-MMM-yyyy")); 
    dateTime.add(DurationFieldType.seconds(), 2075866000); 
    String dateTimeStr = DateTimeFormat.forPattern(
       "yyyy/MM/dd HH:mm:ss").print(dateTime.toDateTime()); 
    System.out.println(dateTimeStr); 

Ambos me están dando el mismo resultado, 1965/10/13 06:09:54.

Espero, 1965/10/13 05:26:40, en su lugar. Me estoy poniendo esto utilizando Oracle consulta dada a continuación,

select to_date('1900-JAN-1') + 2075866000/86400 from dual 

Y en contradicción entre Joda y Oracle, he intentado Wolframalpha, que también se produce el mismo resultado que Oracle.

¿Alguien por favor explique por qué es esa diferencia?

+0

'2075866000/86400', ¿para qué se utiliza el' 86400'? –

+1

¿Cuál es tu zona horaria predeterminada? Si está en India, hay algunos ajustes extraños en la década de 1930 que afectarían el resultado. –

+0

Noté que se encuentra en Malasia, como dijo Jim Garrison, los ajustes a esa zona horaria en el siglo pasado pueden explicar la discrepancia. Vea esta página: http://en.wikipedia.org/wiki/Time_in_Malaysia –

Respuesta

4

Según timeanddate.com, hubo ajustes de huso horario en Kuala Lumpur en 1901, 1905, 1933, 1941, 1942, 1945, y la suma total de estos probablemente explique la discrepancia con que usted se encuentra.

Editar: De hecho, si suma todos los ajustes, obtiene 43:14, que es exactamente la discrepancia que está viendo.

JodaTime y Java te están dando los números correctos.

Cuestiones relacionadas