Вот пример с использованием 12-часового формата с AM / PM, но с использованием классов java.time
:
// no offset, no time zone:
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
...
double d = 0.7826388888888889;
long nanos = Math.round(d * 24L * 60L * 60L * 1_000_000_000L);
LocalTime localTime = LocalTime.ofNanoOfDay(nanos);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("h:mm a");
System.out.println(localTime.format(formatter));
В этом примере печатается следующее:
6:47 PM
При желании вы можете использовать "h:mma"
, чтобы получить 6:47PM
- без пробела.
LocalTime
содержит значение времени без какой-либо информации о часовом поясе.
Вы можете увидеть список доступных вариантов форматирования здесь .
Обновить
Как указывает Оле В.В., вы можете сделать код более понятным, упростив умножение. Используйте java.time.Duration
или java.util.concurrent.TimeUnit
:
long nanosInOneDay = java.time.Duration.ofDays(1).toNanos();
или
long nanosInOneDay = java.util.concurrent.TimeUnit.DAYS.toNanos(1);