如何从时间戳中删除毫秒?

2022-09-02 12:12:16

我被问到这个问题:

给定一个时间戳作为长整型值,在 Java 中编写一个实用程序函数来删除毫秒。例如,给定1274883865399输入(实际时间:20100526T14:24:25.399Z),该函数将返回1274883865000(实际时间:2010-05-26T14:24:25.000Z)

我这样做了:

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)); 
}
}

但它没有给我正确的结果


答案 1

如果我正确理解您,则无需使用日期/日历...

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

1274883865000

或。。。如果您希望拥有日期格式...

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


答案 2

有同样的问题,我的初始时间戳存储在sq中,并完成了这项工作。在我的情况下,sq是一个sq.setTime(1000*(long)Math.floor(sq.getTime()/ 1000));sql.Timestamp