Правильно ли работает getTime () JS с пользователями, не использующими UTC? - PullRequest
0 голосов
/ 07 марта 2019

Я хочу использовать этот пакет для работы с cookie-файлами в моем веб-приложении

https://github.com/js-cookie/js-cookie

В моем веб-приложении моя задача состоит в том, чтобы продлить срок действия cookie-файла (15 минут)когда пользователь делает некоторые действия.Чтобы продлить время истечения, я использую это руководство:

https://github.com/js-cookie/js-cookie/wiki/Frequently-Asked-Questions#expire-cookies-in-less-than-a-day

Мой вопрос: этот код, который использует функцию getTime () (время возврата всегда в UTC), корректно работает с пользователями?Для чего используется другой часовой пояс?

Например, если у пользователя есть часовой пояс CST (отличается на 6 часов UTC), срок действия файла cookie истек правильно (15 минут) или нет (6 часов 15 минут)?Если нет, есть ли у вас идеи, как улучшить этот код?Спасибо.

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

Дата # getTime

getTime () всегда использует UTC для представления времени.Например, браузер клиента в одном часовом поясе getTime () будет таким же, как браузер клиента в любом другом часовом поясе.

Отметка времени всегда указывается в UTC.

Например, если у пользователя есть часовой пояс CST (отличается на 6 часов UTC), срок действия файла cookie истек правильно (15 минут) или нет (6 часов 15 минут)?

Нет, поскольку времянаходится в CST, а не в UTC, также в приведенной выше цитате «getTime () будет таким же, как браузер клиента в любом другом часовом поясе».

1 голос
/ 07 марта 2019

Здесь нет проблем с часовым поясом. Пример кода будет работать нормально.

Если вы хотите смоделировать то, что происходит в других часовых поясах, просто измените настройку часового пояса вашей системы.В окнах щелкните правой кнопкой мыши на часах и выберите «Настроить дату / время».

Если вы посмотрите на заголовок set-cookie в ответе, вы увидите атрибут expires в UTC.Браузеры прекрасно знают, как обращаться с UTC.Пока их собственные часы и часовой пояс установлены правильно, все будет работать как положено.Это очень фундаментальный материал.Здесь нет проблем!

Даты в Javascript не имеют понятия о часовом поясе , поэтому в javascript отсутствует такая вещь, как объект UTC Date.Все содержимое вашего объекта Date раскрывается, когда вы вызываете getTime () - это просто число, поэтому getTime () также не имеет понятия о часовом поясе.new Date() дает вам число, представляющее настоящий момент.Еще раз, нет понятия часового пояса.Он везде делает одно и то же.

...