Как на JS правильно конвертировать миллисекунды в формат 00:00:00,000 ?
На компе стоит время в моем часовом поясе в миллисекундах 1679287353711 , (что равно 04:42:33,711 это я в экселе посчитал вот так: =(1679287353711/86400000)+ДАТА(1970;1;1)
Выполняю JS код чтоб преобразовать это время в формат и сохранить в переменную TIME_FORMAT в таком виде: 00:00:00,000 Но выдаёт: 02:42:33,711 вместо 04:42:33,711 Как правильно исправить ошибку без подгона ответа юзая вот это: hours + 2 ? JS Код: var TIME = 1679287353711; var date = new Date(TIME); var hours = date.getUTCHours() + (date.getTimezoneOffset() / 60); if (hours < 10) { hours = '0' + hours; } var minutes = date.getUTCMinutes(); if (minutes < 10) { minutes = '0' + minutes; } var seconds = date.getUTCSeconds(); if (seconds < 10) { seconds = '0' + seconds; } var milliseconds = date.getUTCMilliseconds(); if (milliseconds < 10) { milliseconds = '00' + milliseconds; } else if (milliseconds < 100) { milliseconds = '0' + milliseconds; } TIME_FORMAT = hours + ':' + minutes + ':' + seconds + ',' + milliseconds; console.log(TIME_FORMAT); |
Зачем вы берете всё в UTC, если всё равно всё приводите часовому поясу клиента?
Используйте сразу методы getHours, getMinutes, getSeconds и getMilliseconds, они возвращают время в соответствии с часовым поясом клиента. |
format date DateTimeFormat
mik888em,
DateTimeFormat let TIME = 1679287353711; let date = new Date(TIME); let minutes = date.getMinutes() + date.getTimezoneOffset(); date.setMinutes(minutes); let milliseconds = date.getMilliseconds().toString().padStart(3, "0"); let formatter = new Intl.DateTimeFormat("ru", { hour: "2-digit", minute: "2-digit", second: "2-digit" }); let TIME_FORMAT = formatter.format(date) + ',' + milliseconds alert(TIME_FORMAT);//04:42:33,711 |
рони,
Цитата:
Как я понял, автор хочет получить время своей локали, а не в UTC. |
Цитата:
|
рони,
А, я кажется понял. Автор таки хочет время в UTC, т.к. 1679287353711 - '20.03.2023, 07:42:33' для UTC+3 (Europe/Moscow). Значит вы все сделали правильно, а у автора единственная проблема в коде - строка №3. mik888em, у вас третья строка должна быть такая и все будет работать, как планировали: var hours = date.getUTCHours(); |
Спасибо) Вобщем так сделал и все заработало
(new Date(1679287353711)) .toISOString() // "2023-03-20T04:42:33.711Z" .substring(11, 23) // "04:42:33.711" ; |
Часовой пояс GMT +3, время: 04:43. |