java - query - ¿Cómo eliminar milisegundos de una marca de tiempo?
logstash tutorial (2)
Me hicieron esta pregunta:
Dada una marca de tiempo como un valor largo, escriba una función de utilidad en Java para eliminar los milisegundos. Por ejemplo, dada una entrada de 1274883865399 (tiempo real: 20100526T14: 24: 25.399Z), la función devolverá 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.
El mismo problema tenía mi marca de tiempo inicial almacenada en sq e hizo sq.setTime(1000*(long)Math.floor(sq.getTime()/ 1000));
que hace el trabajo En mi caso sq es un sql.Timestamp
Si te entiendo correctamente, no hay necesidad de usar Fecha / Calendario ...
long yourmilliseconds = 1274883865399L;
long droppedMillis = 1000 * (yourmilliseconds/ 1000);
System.out.println(droppedMillis);
1274883865000
O ... si desea tener un formato de fecha ...
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