2012-03-09 73 views
14

Me formularon esta pregunta:¿Cómo eliminar milisegundos de una marca de tiempo?

Dando una marca de tiempo como un valor largo, escriba una función de utilidad en Java para soltar los milisegundos. Por ejemplo, dada una entrada de 1274883865399 (tiempo real: 20100526T14: 24: 25.399Z), la función volvería 1274883865000 (tiempo real: 2010-05-26T14: 24: 25.000Z)

Hice esto:

import java.text.*; 
import java.util.*; 

public class ClearMilliSeconds { 
    public static void main(String[] args) { 

     long yourmilliseconds = 1274883865399L; 
     SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm"); 
     Calendar c = Calendar.getInstance(); 


     Date resultdate = new Date(yourmilliseconds); 
     c.set(Calendar.MILLISECOND, 0); 
     resultdate.setTime(c.getTimeInMillis()); 
     System.out.println(sdf.format(resultdate)); 
} 
} 

Pero no me dio el resultado correcto

+0

Espera, pero * ¿por qué * es el valor devuelto por 'getTimeInMillis' ** no ** afectado por el método' Calendar.set (...) '?? – Marco

Respuesta

26

Si entiendo correctamente que no hay necesidad de usar Fecha/Calendario ...

long yourmilliseconds = 1274883865399L; 
long droppedMillis = 1000 * (yourmilliseconds/ 1000);  
System.out.println(droppedMillis); 

O ... si usted desea tener el formato de fechas ...

Calendar c = Calendar.getInstance(); 
c.setTime(new Date(yourmilliseconds)); 
c.set(Calendar.MILLISECOND, 0); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm.ss.SSS'Z'"); 
sdf.setTimeZone(TimeZone.getTimeZone("GMT")); 
System.out.println(sdf.format(c.getTime())); 

2010-05-26T14: 24.25.000Z

+0

Gracias, pero tengo que mostrarlo como: tiempo real: 2010-05-26T14: 24: 25.000Z –

+0

Cambie el formato de fecha aaaa-MM-dd'T'HH: mm.ss.SSS'Z ' – Adam

+0

I He actualizado mi respuesta para incluir el formato de datos correcto – Adam

1

Had misma cuestión había mi marca de tiempo inicial almacenada en cuadrados e hizo sq.setTime(1000*(long)Math.floor(sq.getTime()/ 1000)); que hace el trabajo. En mi caso, sq es sql.Timestamp

Cuestiones relacionadas