Что делать если показывает 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);
}