Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从时间戳中删除毫秒?_Java_Timestamp - Fatal编程技术网

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

Java 如何从时间戳中删除毫秒?,java,timestamp,Java,Timestamp,有人问我这个问题: 给定一个时间戳作为长值,用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 m

有人问我这个问题:

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

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

如果我理解正确,就没有必要使用日期/日历

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有相同的问题,我的初始时间戳存储在sq中
并且做了
sq.setTime(1000*(长)数学地板(sq.getTime()/1000))这就完成了任务。在我的例子中,sq是一个
sql.Timestamp
您的代码有缺陷:您没有将yourmesicles应用于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)); 
   }
}

谢谢,但我必须将其输出为:实际时间:2010-05-26T14:24:25.000ZI我们已经更新了我的答案以包含正确的数据格式非常感谢,非常感谢您的帮助。等等,但是为什么
getTimeInMillis
返回的值不受
Calendar.set(…)
方法的影响??