Почему TimeUnit.convert() не конвертируется правильно в Java?

Поэтому я пытаюсь перевести время из наносекунд в минуты. Мой код выглядит так:

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 в оценочное время2.

Какова правильная форма для использования этого типа преобразования?

Спасибо вам!

2 ответа

Если разница между endTime и startTime не превышает минуты, ответ равен нулю. Обратите внимание, что возвращаемое значение convert() не является числом с плавающей запятой или двойным числом (без десятичной точки)

Вы также можете просто сделать это вручную без всяких накладных расходов -

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

nano / 1000 -> micro / 1000 -> milli  / 1000 -> sec / 60 -> minutes
Другие вопросы по тегам