我正在尝试使用 System.currentTimeMillis() 跟踪程序中的时间 但是,当我尝试从结束时间减去开始时间时,结果为零,而我知道它不应该为零。我认为这可能与声明的数据类型或可能需要的类型转换有关。我该如何修复它以正确减去并将结果转换为秒?
查看代码:
long start=System.currentTimeMillis();
//some code executes....
long end=System.currentTimeMillis();
long result=end-start;
double seconds= TimeUnit.MILLISECONDS.toSeconds(result);
最佳答案
不,你的代码没问题。很可能一毫秒都没有过去。尝试使用 System.nanoTime()
代替。
编辑:实际上,代码有问题。根据 TimeUnit.convert
文档中,“从较细粒度到较粗粒度的转换会截断,因此会丢失精度”,因此如果结果小于 1000,则将为 0。
如果您想要小数秒,只需执行以下操作:
double seconds = result / 1000.0;
nanoTime
仍然有用,但如果代码需要足够长的时间,这可能不是问题。
关于java - 减去 System.currentTimeMillis() 得到零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7949432/