Java 以纳秒为单位获取日历的时间
因为Java文档告诉我不要使用Java 以纳秒为单位获取日历的时间,java,time,calendar,Java,Time,Calendar,因为Java文档告诉我不要使用System.currentTimeMillis进行比较,所以我开始使用System.nanoTime,这很好 但是我遇到了一些问题,我不得不比较过去发生的事情 Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, xyz); cal.getTimeMillis(); 以毫秒为单位获取时间很好,但是将其转换为纳秒(将其乘以1000000)是非常不准确的 如何以毫秒为单位获取过去事
System.currentTimeMillis
进行比较,所以我开始使用System.nanoTime
,这很好但是我遇到了一些问题,我不得不比较过去发生的事情
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, xyz);
cal.getTimeMillis();
以毫秒
为单位获取时间很好,但是将其转换为纳秒
(将其乘以1000000)是非常不准确的
如何以毫秒为单位获取过去事件的时间?Java中的
Calendar
类不包含纳秒信息。所以你不能得到那个
如果需要详细信息,您需要将事件的纳秒存储为
long
:您也不能这样做,nanoTime()不是当前时间的表示形式,但您仍然可以存储它来计算旧进程的运行时间。您使用什么数据类型进行1000000的乘法?也许你应该使用一个大的十进制,这对你来说已经足够精确了。你想实现什么?您真正的问题是什么?“既然Java文档告诉我,不要使用System.currentTimeMillis进行比较”——此限制仅用于测量相邻事件之间的运行时间。如果您使用的是日历
,根据定义,您并不是在测量临近事件之间经过的时间。自Unix纪元以来的纳秒数比long
所能处理的纳秒数大,好吧。@Commonware Ok,谢谢,我将切换回毫秒内的时间。谢谢。@LuiggiMendoza比较两个事件的时间。事件可能发生在过去(直到1970年,开始计算unix时间)。因此,您有一个初始日期(从年到秒)和一个结束日期(也从年到秒),您想/需要知道两者之间的时间量?我不能存储纳秒,只要时间旅行不是发明的。;)所以,我担心,你没有办法检索这些信息。根本不需要这样做。如果两个数字都使用相同的乘法常数,那么它可以被分解出来。