Что делать если показывает 8 часов при выводе даты

И так, у меня есть клиент, после инициализации я записываю в переменную long started_time Calendar.getInstance().getTime().getTime(), потом где-то в коде я получаю эту дату и записываю в новую переменную timestamp Calendar.getInstance().getTime().getTime()-started_time, таким образом я получаю сколько времени просто от инициализации клиента. потом я вывожу это

SimpleDateFormat time = new SimpleDateFormat("kk:mm:ss");
System.out.println(time.format(timestamp));

но если прошло времени менее часа, то в kk записывается 8, а не 0


Ответы (1 шт):

Автор решения: Дмитрий

Класс Calendar очень плохо подходит для этих целей. Мало того, данный класс по факту является Deprecated в связи с появлением пакета java.time в java 1.8. Посему я бы поискал другое решение, например, такое:

public static String getTime(long startedTime) {
    long timestamp = System.currentTimeMillis() - startedTime;
    return String.format("%02d:%02d:%02d", 
            TimeUnit.MILLISECONDS.toHours(timestamp), 
            TimeUnit.MILLISECONDS.toMinutes(timestamp) % 60, 
            TimeUnit.MILLISECONDS.toSeconds(timestamp) % 60);
}
→ Ссылка