如果我理解正确,使用
System.nanoTime()
比System.currentTimeInMillis()
更准确地保持当前时间的标记,即使系统时间被更改。那么为什么当我将nanoTime()
的长整型值转换为Calendar
对象时,输出结果是错误的?import java.util.Calendar;
public class Test {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
System.out.println(c.get(Calendar.MONTH) + " " + c.get(Calendar.DATE) + " " + c.get(Calendar.YEAR) +
" " + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND)
+ ":" + c.get(Calendar.MILLISECOND));
}
}
nanoTime
返回纳秒级别的时间,如果将该值传递给setTimeInMillis
方法,则会出现“单位不匹配”(ns 与 ms 不同)。 - user180100nanoTime()
比currentTimeInMillis()
更适合作为当前时间的标记,因为后者在系统时间更改时可能会发生变化。我的理解是正确的吗? - Matthew Quiros