Java 当前时间 api 中的不同值

Java current time different values in api

我对 Java SE 7 和 8 API 的日期时间相关 class 使用有点困惑,为了显示当前时间,我正在查看多个获取系统当前日期时间的方法。

我的问题是:以毫秒显示时间,哪个更准确?

接下来是代码片段,我正在使用 Java 8 进行审核。

import java.time.Instant;
import java.util.Calendar;
import java.util.Date;

public class CurrentTimeValidationDemo {
    public static void main(String[] args) {
        Instant now = Instant.now();
        Calendar calendar=Calendar.getInstance();
        Date currDate = new Date();
        System.out.println("new Date().getTime() = "+currDate.getTime());
        System.out.println("System.currentTimeMillis() = "+System.currentTimeMillis());
        System.out.println("Instant.now().toEpochMilli() = "+now.toEpochMilli());
        System.out.println("Calendar.getInstance().getTimeInMillis() = "+calendar.getTimeInMillis());
        System.out.println("Calendar.getInstance().getTime().getTime() = "+calendar.getTime().getTime());
    }
}

您在示例中使用的所有函数 return 相同的值(如果在同一毫秒内启动)none 其中更准确。

其中有一个未创建任何对象,因此如果您只需要知道自 1/1/1970 以来的当前毫秒数,请使用

System.currentTimeMillis()

相反,如果您还需要等效对象来存储该值或进行其他操作,请使用您需要的对象。

例如,如果您需要将此值传递给接受 java.util.Date 的函数,请使用 java.util.Date(依此类推)。