规约原文
【强制】获取当前毫秒数:System.currentTimeMillis(); 而不是new Date().getTime()。
说明:如果想获取更加精确的纳秒级时间值,使用System.nanoTime的方式。在JDK8中,针对统计时间等场景,推荐使用Instant类
问题描述
System.currentTimeMillis返回的时间是“墙上时钟”的时间,表示当前的时间值,这个值可能会因为操作系统或者ntp的时间调整后退;而System.nanoTime是“单调钟”,和当前时间没有关系,时间值不会后退,用于测量duration。这一点不同个人认为应该描述清楚,原文的表述容易造成“System.nanoTime能够比System.currentTimeMillis()更精确的获得当前时间”这样的误解
修改建议
参考问题描述部分
3条答案
按热度按时间gywdnpxw1#
PTAL @SeanCai
vlurs2pr2#
规约原文
【强制】获取当前毫秒数:System.currentTimeMillis(); 而不是new Date().getTime()。
说明:如果想获取更加精确的纳秒级时间值,使用System.nanoTime的方式。在JDK8中,针对统计时间等场景,推荐使用Instant类
问题描述
System.currentTimeMillis返回的时间是“墙上时钟”的时间,表示当前的时间值,这个值可能会因为操作系统或者ntp的时间调整后退;而System.nanoTime是“单调钟”,和当前时间没有关系,时间值不会后退,用于测量duration。这一点不同个人认为应该描述清楚,原文的表述容易造成“System.nanoTime能够比System.currentTimeMillis()更精确的获得当前时间”这样的误解
修改建议
参考问题描述部分
一般应该不会产生这种误解
因为System.currentTimeMillis的返回值为long,System.nanoTime的返回值也为long,不可能在同样精度的返回值格式下返回更加详细的情报
2w3rbyxf3#
@gujin520 关注下