为什么TimeUnit.convert()在Java中没有正确转换?

时间:2016-12-22 23:27:29

标签: java time converter

所以我试图将时间从纳秒转换为分钟。 我的代码看起来像这样:

long startTime=System.nanoTime();
//some code...
long endTime=System.nanoTime();
long estimatedTime=endTime-startTime;

long estimatedTime2=TimeUnit.MINUTES.convert(estimatedTime, TimeUnit.NANOSECONDS);
System.out.println(estimatedTime2 +","+estimatedTime);

输出

estimatedTime is always in nanoseconds
estimatedTime2 is always 0;

根据JavaDoc - TimeUnit

public long convert(long sourceDuration, TimeUnit sourceUnit)

该方法假设将long返回到estimatedTime2。

使用此转换类型的正确表单是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

除非endTime和startTime之间的差异超过一分钟,否则答案为零。请注意,convert()返回值不是float或double(表示没有小数点)

答案 1 :(得分:0)

您也可以手动完成,而无需全部开销 -

float minutesElapsed = estimatedTime / 1000 / 1000 / 1000 / 60;

nano / 1000 -> micro / 1000 -> milli  / 1000 -> sec / 60 -> minutes