Почему 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