ManagementFactory.getRuntimeMXBean(). GetUptime() форматирование для отображения дня, часов, минут и секунд

Это мой код для отображения времени работы приложения:

/**
 * Gets the uptime of the application since the JVM launch
 * @return The uptime in a formatted String (DAYS, MONTHS, MINUTES, SECONDS)
 */
public static String getGameUptime() {
    RuntimeMXBean mxBean = ManagementFactory.getRuntimeMXBean();
    DateFormat dateFormat = new SimpleDateFormat("dd:HH:mm:ss");
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+0"));
    return dateFormat.format(new Date(mxBean.getUptime()));
}

Но когда приложение работает только в течение 3 минут и 50 секунд, оно вернет "01:00:03:50". 01 должен быть 00 в этом случае. Какова причина этого? Как это исправить?

1 ответ

Решение

Попробуй это

    DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    long uptime = mxBean.getUptime();
    String d = uptime / (3600 * 1000 * 24) + ":" + dateFormat.format(uptime);

Обратите внимание, что DateFormat также принимает миллисекунды

Другие вопросы по тегам