How to remove milliseconds from a timestamp?
Solution 1
If I understand you correctly there is no need to use Date / Calendar...
long yourmilliseconds = 1274883865399L;
long droppedMillis = 1000 * (yourmilliseconds/ 1000);
System.out.println(droppedMillis);
1274883865000
Or... if you wish to have date formatting...
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
Solution 2
Had same issue had my initial timestamp stored in sq
and did sq.setTime(1000*(long)Math.floor(sq.getTime()/ 1000));
that does the job. In my case sq is a sql.Timestamp
Solution 3
Your code was buggy: You didn't apply the yourmilliseconds to c(Calendar). The fix, to stay within the boundaries of your code:
import java.text.*;
import java.util.*;
public class ClearMilliSeconds {
public static void main(String[] args) {
long yourmilliseconds = 1274883865399L;
Calendar c = Calendar.getInstance();
c.setTimeInMillis(yourmilliseconds);
c.set(Calendar.MILLISECOND, 0);
Date resultdate = new Date(c.getTimeInMillis());
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");
System.out.println(sdf.format(resultdate));
}
}
Majid Kamal
Updated on July 05, 2022Comments
-
Majid Kamal almost 2 years
I was asked this question :
Given a timestamp as a long value, write a utility function in Java to drop the milliseconds. For example, given an input of 1274883865399 (actual time: 20100526T14:24:25.399Z), the function would return 1274883865000 (actual time: 2010-05-26T14:24:25.000Z)
I did this :
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)); } }
But it did not give me the right result
-
Majid Kamal about 12 yearsThanks, but I have to output it as : actual time: 2010-05-26T14:24:25.000Z
-
Adam about 12 yearsI've updated my answer to include the correct data formatting
-
Majid Kamal about 12 yearsThank you very much, your helps are appreciated.