java - 减去 System.currentTimeMillis() 得到零

标签 java time types

我正在尝试使用 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/

相关文章:

java - Gmail Api 请求的身份验证范围不足

java - 使用 Java 读取文本文件会抛出 IOException

c++ - 测量 C++ OpenMP 代码中的执行时间

java - 错误无法应用于给定类型

java - 在 Android 中发送 HTML 格式的电子邮件

java - Spring 3.0 的 Google App Engine 实体管理器配置

mysql - 在日期范围和特定时间范围之间选择

actionscript-3 - 在播放器 API 中指定视频开始时间

scala - Scala 中的奇怪输入错误

python - python中的复数