Страницы

Поиск по вопросам

понедельник, 10 июня 2019 г.

Как эксель преобразует число во временной формат?

Нужно написать метод на java для преобразования числа в формат времени. Есть два столбца в экселе, в одном записан коэффициент, допустим 4.24 а в другом столбце получается время 5:47:36. Я делаю автоматизацию отчета и нужно чтобы 5:47:36 получалось сразу вместо 4.24. я не могу понять, как эксель преобразует число во временной формат?


Ответ

Алгоритм довольно простой: число 4.24 умножается на количество миллисекунд в сутках: 86 400 000 - получается результат в миллисекундах, который уже можно перевести в дату. Получается, что цифры целой части (4) означают число полных дней и при переводе просто во время (в пределах суток) эту цифру можно не учитывать, оставляя только знаки после запятой: перевод 4.24 и 0.24 вернёт один и тот же результат.
На Java можно написать следующим образом:
Date date = new Date((long) (4.24 * 86400000L)); SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); format.setTimeZone(TimeZone.getTimeZone("GMT")); System.out.println(format.format(date));

Комментариев нет:

Отправить комментарий