Как влияет символ “Z” в конце даты на JS?

257
06 августа 2021, 14:30

Есть проблема с разницей во времени при .getHours(). Пусть есть дата 2019-09-20T15:20:23Z. При получении от этой даты .getHours() я получаю значение 18. При получении часов от 2019-09-20T15:20:23.000 я получаю значение 15. Как влияет "Z", как это исправить средствами самого JS (никаких сторонних библиотек) и как получать верное значение часов. Мне нужно получать конкретно то значение, которое указано в дате, без этой разницы в 3 часа.

Answer 1

Z - указывает, что время в UTC. Если Z отсутствует, то считается, что время местное. Поэтому при наличии Z у Вас добавляется разница между UTC и Вашим часовым поясом.

Чтобы избежать путаницы, Вы можете все значения даты и времени:

  • хранить в UTC (рекомендуется).
  • хранить в местном времени (не рекомендуется (из-за разницы часовых поясов например время 12:00 зафиксированное в Москве будет соответствовать 21:00 на Чукотке, а пользователь на Чукотке увидит 12:00))

Подробнее тут.

Для более удобной работы с датой и временем (особенно с учётом часовых поясов) лучше использовать moment.js, а не работать с ними напрямую.

Answer 2

Часть Z обозначает временную зону – в формате +-hh:mm, либо символ Z, обозначающий UTC. По стандарту её можно не указывать, тогда UTC, но в Safari с этим ошибка, так что лучше указывать всегда.

Например:

var msUTC = Date.parse('2012-01-26T13:51:50.417Z');

var ms = Date.parse('2012-01-26T13:51:50.417-07:00');

Взято с отсюда

READ ALSO
Не могу добавить sonar server authentication token в jenkins

Не могу добавить sonar server authentication token в jenkins

При настройке SonarQube scanner plugin в jenkins столкнулся с проблемой добавления server authentication tokenПри нажатии на кнопку ничего не происходит + она съехала

205
Изменить скорость движения мяча с клавиатуры

Изменить скорость движения мяча с клавиатуры

Я создал обработчик нажатий клавиш, который передаёт инфу о нажатии keydown в переменную speed со значением в соответствии нажатия клавишЗначения...

259
Как написать скрипт , который реагирует на изменение значения?

Как написать скрипт , который реагирует на изменение значения?

Мне нужно написать скрипт, который реагирует на изменение значения input#font-size-slider (событие input) и обновляет инлайн-стиль span#text обновляя его...

277
Умеет ли tuple работать в цикле

Умеет ли tuple работать в цикле

Необходимо пройти по всему кортежу и выводить результат каждого проходаВ итоге работы программы на экран должны быть выведены все элементы...

371