Я боролся с этим немного сейчас. Я пытаюсь преобразовать эпоху в объект даты. Эпоха отправлена мне в UTC. Всякий раз, когда вы проходите new Date()
эпоху, это предполагает, что это локальная эпоха. Я попытался создать объект UTC, а затем использовать его, setTime()
чтобы приспособить его к нужной эпохе, но единственный метод, который кажется полезным, это то, что toUTCString()
строки не помогают мне. Если я передам эту строку в новую дату, он должен заметить, что это UTC, но это не так.
new Date( new Date().toUTCString() ).toLocaleString()
Моя следующая попытка состояла в том, чтобы попытаться понять разницу между локальной текущей эпохой и текущей UTC, но я также не смог этого понять.
new Date( new Date().toUTCString() ).getTime() - new Date().getTime()
Это только дает мне очень маленькие различия, до 1000, что в миллисекундах.
Какие-либо предложения?
javascript
date
utc
epoch
Шейн Рустл
источник
источник
Ответы:
Я думаю, что у меня есть более простое решение - установить начальную дату для эпохи и добавить единицы измерения UTC. Скажем, у вас есть переменная эпохи UTC, сохраненная в секундах. Как насчет того
1234567890
. Чтобы преобразовать это в правильную дату в местном часовом поясе:d
теперь дата (в моем часовом поясе) установлена наFri Feb 13 2009 18:31:30 GMT-0500 (EST)
источник
var d = new Date(utcSeconds * 1000)
должен дать тот же результат.var d = new Date(1234567890000)
возвращает тот же результатЭто просто,
new Date()
просто занимает миллисекунды, напримеристочник
const d = new Date(epoch * 1000)
.И только для журналов я сделал это с помощью библиотеки Moment.js , которую я в любом случае использовал для форматирования.
источник
Время эпохи в секундах с 1 января 1970 года.
date.getTime()
Возвращает миллисекунды с 1 января 1970 года, поэтому ... если у вас есть отметка времени эпохи, преобразуйте ее в метку времени javascript, умножив ее на 1000.источник
источник
Чтобы преобразовать текущее время эпохи в [мс] в 24-часовое время. Возможно, вам потребуется указать опцию отключения 12-часового формата.
или как JS:
Примечание: использование
en-GB
здесь, это просто (случайный) выбор места с использованием 24-часового формата, это не ваш часовой пояс!источник
d/m/yyyy
или это такm/d/yyyy
? Право (наиболее логичным) способ отображения это должно быть:yyyy-mm-dd
. Любой берущий?Время эпохи (т. Е. Время эпохи Unix) - это почти всегда количество секунд , истекших с 1 января 1970 года 00:00:00 (время UTC), а не количество миллисекунд, на которое указывают некоторые ответы.
https://en.wikipedia.org/wiki/Unix_time
Следовательно, если вы получили значение времени Unix Epoch, оно, вероятно, будет в секундах и будет выглядеть примерно так
1547035195
. Если вы хотите, чтобы этот человек читался в JavaScript, вам нужно преобразовать значение в миллисекунды и передать это значение вDate(value)
конструктор, например:Вам не нужно делать
d.setUTCMilliseconds(0)
шаг в принятом ответе, потому чтоDate(value)
конструктор JavaScript принимает значение UTC в миллисекундах (не по местному времени).https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Syntax
Также обратите внимание, что вам следует избегать использования
Date(...)
конструктора, который принимает строковое представление даты-времени, это не рекомендуется (см. Ссылку выше).источник
Вы просто просите преобразовать строку UTC в "локальную" строку? Вы могли бы сделать:
источник
Дополнение к приведенному выше ответу @djechlin
преобразует время EPOCH в удобочитаемую дату Только не забывайте, что тип времени EPOCH должен быть целым числом.
источник
Самое простое решение, которое я нашел, это:
Обратите внимание, что
* 1000
в концеnew Date(timestamp)
утверждения нет этого, поскольку это (во всяком случае, для меня!) Всегда выдает неверную дату, то есть вместо указания 2019-го года это 51015, так что просто имейте это в виду.источник
Если вы предпочитаете разрешать временные метки и преобразования дат из и в UTC и местное время без библиотек, таких как moment.js, взгляните на опцию ниже.
Для приложений, использующих метки времени UTC, вам может потребоваться отобразить дату в браузере, учитывая местный часовой пояс и переход на летнее время, когда это применимо. Редактирование даты в другое летнее время, даже если в том же часовом поясе может быть сложно.
Расширения
Number
иDate
ниже позволяют отображать и получать даты в часовом поясе временных меток. Например, предположим, что вы находитесь в Ванкувере, если вы редактируете дату в июле или декабре, это может означать, что вы редактируете дату в PST или PDT.Я рекомендую вам проверить фрагмент кода ниже, чтобы проверить это решение.
Преобразования из миллисекунд
Конверсии из дат
использование
Убедитесь сами
Показать фрагмент кода
источник
РЕДАКТИРОВАТЬ
Редактировать исправлено
источник
Учитывая, что у вас есть в
epoch_time
наличии,источник
var myDate = new Date( your epoch date *1000);
источник - https://www.epochconverter.com/programming/#javascript
источник
@ Амджад, хорошая идея, но лучшая реализация:
источник
Сначала преобразуйте его в строку, а затем замените текст часового пояса.
источник