Преобразование эпохи в дату в javascript дает неверный ответ

1

Я использую Date для преобразования эпохи миллисекунд unix в дату.

Итак, 1501783442 == Tuesday, 8 August 2017 12:35:57.

Но javascript говорит, что его Sun Jan 18 1970 14:39:43 GMT+0530 (IST).

<p id="demo"></p>

<script>
  var d = new Date(1501783442);
  document.getElementById("demo").innerHTML = d;
</script>

Ссылка Jsfiddle.

Что тут происходит?

  • 4
    Разве Unix не ставит метку времени в секундах?
  • 0
    Date.now() (например, 1502197442246 ) имеет три дополнительные цифры. Попробуйте умножить на 1000 ...
Теги:

2 ответа

7
Лучший ответ

Прежде всего, 1501783442 равно GMT: Thursday, August 3, 2017 6:04:02 PM по https://www.epochconverter.com/.

Во-вторых, Unix использует секунды, тогда как Javascript использует миллисекунды. Таким образом, чтобы преобразовать, вы должны умножить на 1000, что дает правильный результат (исправленный для часового пояса, в котором живет ваш браузер):

<p id="demo"></p>

<script>
  var d = new Date(1501783442 * 1000);
  document.getElementById("demo").innerHTML = d;
</script>
  • 0
    Ах, я вижу, спасибо!
0

<p id="demo"></p>

<script>
  var d = new Date(1501783442);
  document.getElementById("demo").innerHTML = d;
</script>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню