简体   繁体   English

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

[英]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.给定一个作为 long 值的时间戳,用 Java 编写一个实用程序函数来删除毫秒。 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)例如,输入 1274883865399(实际时间:20100526T14:24:25.399Z),函数将返回 1274883865000(实际时间:2010-05-26T14:24:25)000。

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但它没有给我正确的结果

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 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 2010-05-26T14:24.25.000Z

Had same issue had my initial timestamp stored in sq and did sq.setTime(1000*(long)Math.floor(sq.getTime()/ 1000));有同样的问题,我的初始时间戳存储在 sq 中,并且sq.setTime(1000*(long)Math.floor(sq.getTime()/ 1000)); that does the job.这样就可以了。 In my case sq is a sql.Timestamp在我的情况下 sq 是一个sql.Timestamp

Your code was buggy: You didn't apply the yourmilliseconds to c(Calendar).您的代码有问题:您没有将 yourmilliseconds 应用于 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)); 
   }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从java 8中的LocalTime中删除毫秒 - How to remove milliseconds from LocalTime in java 8 如何从Java中的毫秒时间戳中提取一天中的时间段? - How to extract the period of the day from milliseconds timestamp in Java? FreeMarker - 从毫秒中删除逗号 - FreeMarker - Remove comma from milliseconds 如何从Java中的Date Object格式中删除毫秒 - How to remove milliseconds from Date Object format in Java 如何将 TemporalAccessor 转换为毫秒时间戳(使用 Instant) - How to convert a TemporalAccessor a milliseconds timestamp (using Instant) 如何将 Unix 时间戳(以毫秒为单位)转换为与 PostgreSQL 兼容的时间戳? - How do I convert Unix timestamp in milliseconds to a Timestamp compatible with PostgreSQL? 如何在Java中的本地/任何时区中找到从时间戳经过的毫秒数 - How to find number of milliseconds that have elapsed from a timestamp in local/any timezone in java 如何从日期类型的变量中删除时间戳? - how to remove timestamp from a variable of type Date? Java LocalDateTime 从 UTC 时区中删除毫秒 - Java LocalDateTime remove the milliseconds from UTC timezone 将时间戳从毫秒转换为本地时区的日期或日历 - Convert timestamp from milliseconds to Date or Calendar in local time zone
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM