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

问题描述 投票:0回答:4

有人问我这个问题:

给定一个长整型值的时间戳,用 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)); 
}
}

但是它没有给我正确的结果

java timestamp
4个回答
36
投票

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

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


1
投票

有同样的问题,我的初始时间戳存储在 sq 中 并完成了

sq.setTime(1000*(long)Math.floor(sq.getTime()/ 1000));
的工作。就我而言, sq 是一个
sql.Timestamp


1
投票

您的代码有错误:您没有将毫秒应用于c(日历)。修复方法是保持在代码的范围内:

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

0
投票

如果你使用的是js,可以参考这篇文章:https://geekskai.com/blog/js/how-to-remove-milliseconds-from-timestamp-in-js/

© www.soinside.com 2019 - 2024. All rights reserved.