Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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中从两个不同的日期获取时间(hh:mm:ss)_Java_Date - Fatal编程技术网

如何在java中从两个不同的日期获取时间(hh:mm:ss)

如何在java中从两个不同的日期获取时间(hh:mm:ss),java,date,Java,Date,我从两个不同的日期获得千秒,试图将千秒转换为时间戳。我已经编写了以下代码 Date d1 = new Date(); for(int i=0;i<1000000;i++){ System.out.println(i); } Date d2 = new Date(); System.out.println(d1); System.out.println(d2); long seconds = d2.getTime()

我从两个不同的日期获得千秒,试图将千秒转换为时间戳。我已经编写了以下代码

    Date d1 = new Date();
    for(int i=0;i<1000000;i++){
        System.out.println(i);
    }

    Date d2 = new Date();
    System.out.println(d1);
    System.out.println(d2);

    long seconds = d2.getTime()-d1.getTime();
    Date d3 = new Date(seconds);

    DateFormat df = new SimpleDateFormat("HH:mm:ss");
    System.out.println(seconds);
    System.out.println("Time is : "+df.format(d3));

    final Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(seconds);
    System.out.println(df.format(cal.getTime()));
但实际的差异是2秒或3秒,这是正确的方法还是有其他方法。

设置时区:

DateFormat df = new SimpleDateFormat("HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(seconds);
System.out.println("Time is : "+df.format(d3));
Date
类从1970年1月1日00:00:00 UTC开始以毫秒为单位测量时间。看起来您的本地时间比UTC早了5个小时,或者是1970年1月1日,这使得UTC“零”日期出现在您所在时区的上午5点。

而不是for loop do

其余的都应该起作用。这种情况发生时,Java编译器会优化、删除或重新排列代码,因此您无法完全确定
d1
的实例化是在循环之前还是之后发生的。它可能是任何东西

DateFormat df = new SimpleDateFormat("HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(seconds);
System.out.println("Time is : "+df.format(d3));
Thread.sleep(2000); // 2000 milliseconds