Настоящая проблема в том, что ни вы, ни я не понимаем, какое преобразование здесь ожидается.Я не могу решить это для вас.Я хотел бы поделиться мыслью, хотя, возможно, это может немного помочь вам в пути.
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm");
long longValue = -1_800_000;
String formattedTime = Instant.ofEpochMilli(longValue)
.atZone(ZoneId.of("Asia/Kabul"))
.format(timeFormatter);
System.out.println(formattedTime);
Это печатает ожидаемое.
04:00
Я предполагаю, что длинное значение обозначает миллисекунды с эпохи, это было бы очень распространенным явлением.Это согласуется с местным временем в часовых поясах Азии / Кабула и Азии / Тегерана, я не знаю, есть ли другие часовые пояса, которые могут соответствовать.
Если это объяснение будет выполнено, нам придется предположить,что есть ошибка в другом значении, хотя.Я не смог найти часовой пояс, в котором это значение соответствовало бы времени 05:00.Кроме того, если значения принадлежат разным часовым поясам, у вас не будет шансов, если они не сообщат, в каких часовых поясах они находятся.