【发布时间】:2017-04-12 09:47:27
【问题描述】:
我对使用 Java SE 7 和 8 API 的 DateTime 相关类有点困惑,为了显示当前时间,我正在审查获取系统当前日期时间的多种方法。
我的问题是:哪一个更准确地以毫秒为单位显示时间?
接下来是sn-p的代码,我用Java 8做review。
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());
}
}
【问题讨论】:
-
定义“更准确”。非常相关的stackoverflow.com/questions/368094/… 请注意,它们不一定会打印相同的内容,
Instant.now不会考虑您机器的时区或 DST。 -
另请参阅我的SO-post,了解 Java-9 中的增强分辨率。
-
纳秒会有细微差别。
标签: java datetime time java-8 milliseconds