java - 如何获取时间(hh :mm:ss) from two different dates in java

标签 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()-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()));

for循环需要2或3秒,结果可能是00:03:80,但我的结果总是得到

Time is : 05:30:04
05:30:04

但实际差异是 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 点。

关于java - 如何获取时间(hh :mm:ss) from two different dates in java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17419956/

相关文章:

generics - Oracle JDK 和 Eclipse JDT 编译器不同意!哪个编译不正确?不寻常的泛型和推理

java - LocalDate.parse 是否会默默地更正天数?

Java-将变量从方法获取到其他方法

java - 如何创建一个大的选择屏幕?

java - 如何将不明确的字符串解析为日期?

django - 如何在 Django 博客中首先显示最近的帖子?

c# - 从函数返回日期 int 值

C# 在 SQL Server 中选择仅使用带有 sql 参数的日期

java - 通过坐标访问游戏对象,同时仍然能够轻松移动它们

java - Spring @Value 注释不取消引用值?