2012-05-07 22 views
5

He siguiente marca de tiempo en forma de enterola conversión de enteros de fecha y hora en la fecha de Java

1333125342 

puedo convertirlo utilizando SQL:

select DATEADD(ss, FlOOR(1333089223/86400)*86400, '1970-01-01 00:00:00') AS Date 

cómo convertirlo en Java? Así que volvería valor:

3/30/12 12:18:43 PM 
+0

¿qué representa '1333125342'? –

+0

@JigarJoshi su valor entero de la marca de tiempo – kinkajou

+0

no parece probable: 'fecha: fecha no válida' 1333125342'' –

Respuesta

17

Suponiendo que es el tiempo desde 1/1/1970 en segundos. puede probar

String dateAsText = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 
          .format(new Date(1333125342 * 1000L)); 
+0

qué representa L ? – kinkajou

+3

La 'L' representa que el 1000 es un' long' sin esto es probable que obtenga un desbordamiento cuando se multiplica un 'int' *' int' pero un 'int' *' long' dará como resultado un 'long' que no se desbordará –

+0

bueno esto funcionó muy bien – kinkajou

2

si es valor de milisegundos representa el número de milisegundos que han transcurrido desde January 1, 1970 00:00:00.000 GMT

continuación, sólo tiene que utilizar

new java.util.Date(millis); 

y si lo necesita, en particular, formato

3/30/12 12:18:43 PM 

luego use SimpleDateFormat para formatear el Date al formato deseado String

+1

si no se procesa en consecuencia para convertirlo en tales millis –

+0

vuelve 1970-01-16 15:48:09 pero el valor es 3/30/12 12:18:43 PM – kinkajou

+1

Necesita saber lo que representa este número, y luego ver mi comentario anterior, Necesita multiplicar con 1000L como sugirió peter –

0

Esa marca de tiempo contiene los segundos transcurridos desde 01/01/1970 0:00 UTC.

Para convertirlo a una Fecha de Java instanciar un nuevo Date Objeto (see Java doc) e invocar setTime() sobre eso. Tenga en cuenta que setTime espera milisegundos en lugar de segundos, por lo que tendría que multiplicar su marca de tiempo por 1000.

El método toString() produce algo legible.

Cuestiones relacionadas