Как отобразить дату в правильном формате после секундомера? - PullRequest
0 голосов
/ 30 января 2019

Я недавно работаю с гуавой.У секундомера такой вопрос.У меня есть метод, который вычисляет общее время выполнения метода пут и его количество, чтобы вычислить среднее время, потраченное на выполнение метода пут.

        Stopwatch stopwatch = Stopwatch.createStarted();
        cacheEntry.put(str, new CacheEntry(str));
        putCounter++;
        mapBasedStatisticsCache.setPutCounter(putCounter);
        currentTime += stopwatch.stop().elapsed(TimeUnit.NANOSECONDS);
        System.out.println(currentTime);
        mapBasedStatisticsCache.setCurrentTime(currentTime);

После этого я вычисляю среднеевремя в наносекундах

public long getAveragePutTime() {
        return getCurrentTime() / getPutCounter();
    }

Как я могу затем проанализировать результат метода getAveragePutTime в формате чч: мм: сс: мс?

Я пытаюсь сделать это следующим образом:

public String getAveragePutTime() {
    long result = getCurrentTime() / getPutCounter();
    long hh = TimeUnit.NANOSECONDS.toHours(result);
    long mm = TimeUnit.NANOSECONDS.toMinutes(result);
    long ss = TimeUnit.NANOSECONDS.toSeconds(result);
    long ms = TimeUnit.NANOSECONDS.toMillis(result);
    return "Hours: " + hh + " minutes: " + mm + " seconds: " + ss + " millisecond: " + ms;
}

Но у меня есть такой результат:

Nanos: 128240
Hours: 0 minutes: 0 seconds: 0 millisecond: 0

1 Ответ

0 голосов
/ 31 января 2019

У вас 128420 наносекунд.Это 0,000128420 секунд.Это 0,128420 миллисекунд.0,128420 миллисекунд в целых числах - 0 миллисекунд.Так что ваш результат на самом деле нормальный.

Однако ... У вас есть другие проблемы!Ваш getAveragePutTime() написан так, что у вас будут избыточные номера.Поэтому, когда у вас есть часы, удалите их из остатков:

public String getAveragePutTime() {
  long result = getCurrentTime() / getPutCounter();
  long hh = TimeUnit.NANOSECONDS.toHours(result);
  result -= TimeUnit.HOURS.toNanos(hh);
  long mm = TimeUnit.NANOSECONDS.toMinutes(result);
  result -= TimeUnit.MINUTES.toNanos(mm);
  long ss = TimeUnit.NANOSECONDS.toSeconds(result);
  result -= TimeUnit.SECONDS.toNanos(mm);
  long ms = TimeUnit.NANOSECONDS.toMillis(result);
  return "Hours: " + hh + " minutes: " + mm + " seconds: " + ss + " millisecond: " + ms;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...