p3c 关于编程规范-日期时间中“获取当前毫秒数”部分的表述

w7t8yxp5  于 5个月前  发布在  其他
关注(0)|答案(3)|浏览(71)

规约原文

【强制】获取当前毫秒数:System.currentTimeMillis(); 而不是new Date().getTime()。
说明:如果想获取更加精确的纳秒级时间值,使用System.nanoTime的方式。在JDK8中,针对统计时间等场景,推荐使用Instant类

问题描述

System.currentTimeMillis返回的时间是“墙上时钟”的时间,表示当前的时间值,这个值可能会因为操作系统或者ntp的时间调整后退;而System.nanoTime是“单调钟”,和当前时间没有关系,时间值不会后退,用于测量duration。这一点不同个人认为应该描述清楚,原文的表述容易造成“System.nanoTime能够比System.currentTimeMillis()更精确的获得当前时间”这样的误解

修改建议

参考问题描述部分

vlurs2pr

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,不可能在同样精度的返回值格式下返回更加详细的情报

相关问题