Search code examples
javatimestamp

How to remove milliseconds from a timestamp?


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


Solution

  • 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