Java当前时间在api中的值不同

时间:2016-11-28 15:45:12

标签: java datetime time java-8 milliseconds

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

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

接下来是代码片段,我正在使用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());
    }
}

1 个答案:

答案 0 :(得分:1)

您在示例中使用的所有函数都返回相同的值(如果以相同的毫秒启动),它们都不会更准确。

其中一次没有创建任何对象,所以如果你只需知道自1970年1月1日以来的当前毫秒数

System.currentTimeMillis()

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

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