Момент JS показывает 1 час разницы в некоторых ПК - PullRequest
0 голосов
/ 07 декабря 2018

Я не знаю почему, но на некоторых ПК моменты показывают неверное время.Я полагаю, что это вызвано летним летом (в настоящее время здесь, в моей стране).Но на некоторых ПК показываются правильно, а на других с 1 часом разницы (как этот экран печати).Очевидно, что конфигурация всех компьютеров, которые я тестирую, равна.

momentJS website

Обновление: В новой проверке я вижу, что Firefox X Chrome показывает разное время,Кажется, проблема только в Chrome.

Chrome x Firefox Time

В реестре Windows значения HKLM \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation:

regedit print

HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Times Zones не существует в моем реестре.

Chromenavigator.userAgent: Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 71.0.3578.80 Safari / 537.36

Firefox navigator.userAgent: Mozilla / 5.0 (WindowsNT 6.1; Win64; x64; rv: 63.0) Gecko / 20100101 Firefox / 63.0

.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Спасибо за предоставление всей информации в вопросе.Хотя я скажу, что в ретроспективе это не совсем по теме для переполнения стека , и, вероятно, лучше подойдет для SuperUser или ServerFault сайтовв сети StackExchange.Тем не менее, я думаю, что могу решить вашу проблему:

Основная причина в том, что вы написали:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Times Zones не существует в моем реестре.

Это означает, что каким-то образом, по какой-то причине, возможно, с помощью какого-либо другого программного обеспечения или системного администратора, этот очень важный ключ был удален .Этот конкретный ключ является корнем базы данных часовых поясов Windows и содержит информацию «Динамическое летнее время», позволяющую изменять начало и конец летнего времени из года в год.Это то, что позволяет выбрать из списка часовых поясов на панели управления.Если действительно этот ключ не существует, то этот список должен выглядеть пустым.

Почему вы видите Chrome через час, потому что Chrome внутренне берет TimeZoneKeyName, а затем пытается найти соответствующую запись во временибаза данных.Если он найден, он может использовать динамическое летнее время оттуда, чтобы гарантировать, что объект JS Date ведет себя корректно в отношении изменений по сравнению с прошлым годом.

Интересная часть - это когда не найдено (поскольку оно удалено на вашем компьютере), тогда Chrome не применяет информацию о летнем времени текущего года, содержащуюся в ключах, которые присутствуют на вашем компьютере .Это просто предполагает, что нет летнего времени.FireFox, с другой стороны, похоже, прибегает к использованию данных летнего времени, когда база данных о часовых поясах отсутствует.

В любом случае - вы имеете дело с недокументированным поведением, потому что это недопустимое состояниедля вашего компьютера, чтобы этот ключ был удален.Есть много других вещей, которые не обязательно будут работать правильно (например, планирование собраний Outlook с людьми в других часовых поясах).

Кроме того, на скриншоте вашего реестра видно, что *Значение 1032 * - это значение с 2017 года, когда DST начнется в октябре в Бразилии.Теперь он начинается в ноябре, поэтому 00 00 0a 00 должно быть 00 00 0b 00 в начале этого значения.Это изменение было сделано в Windows с KB4093753 , которого нет на вашем компьютере.Это говорит мне, что обновления Windows не работают на этих компьютерах.Возможно, ваш администратор вручную выбирает, какие обновления устанавливать, или, возможно, они вообще не были обновлены.

Что касается часовых поясов, следует понимать, что изменения непредсказуемы.Различные правительства по всему миру могут и действительно изменяют информацию о часовых поясах, иногда ответственно, иногда беспорядочно.Microsoft отслеживает изменения в этих данных и производит обновления для Windows соответственно.Вы можете просмотреть эти обновления в блоге Microsoft TZ / DST или в разделе «Выпущенные обновления» KB914387 .Если вы не будете в курсе последних событий, вы рискуете не получить точную информацию о часовом поясе.И если вы удалите ключи реестра часового пояса, как показано здесь, то все ставки отключены.

Также обратите внимание, что важно иметь информацию о текущем часовом поясе даже для стран, отличных от вашей.Возможно, например, вам может потребоваться запланировать встречу с человеком в другом часовом поясе.Если ваш компьютер не обновляет данные о часовых поясах, вы можете неправильно запланировать это собрание.

На этом этапе я бы рекомендовал установить последнее обновление часового пояса (независимо от указанной страны), равное KB4468323 на момент написания этой статьи.Обновления часовых поясов являются накопительными, поэтому теоретически установка этого обновления должна восстановить отсутствующий раздел реестра и устранить проблему.

В качестве альтернативы и, возможно, лучше, просто включите Центр обновления Windows.Вероятно, вы пропустили еще много-много обновлений.

0 голосов
/ 07 декабря 2018

Может быть, если вы используете момент (). IsDST () и действовать соответственно ...

http://momentjs.com/docs/#/query/is-daylight-saving-time/

...