Как использовать пользовательское время в браузере для проверки разницы во времени между клиентом и сервером

Я просто написал небольшой фрагмент кода, чтобы показать время сервера на веб-странице. На данный момент у меня только одна машина, поэтому я не могу проверить, работает ли код.

Есть ли способ сказать браузеру использовать временную конфигурацию, отличную от конфигурации, настроенной в ОС? Я использовал плагины для Firefox, чтобы протестировать разные локали, интересно, есть ли аналогичные варианты тестов времени.

Благодарю.

Ответ 1

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

В Linux, Mac OSX и других системах * NIX вы можете установить переменную среды TZ. Подробнее см. ответ бенедикта Кеппела.

Тем не менее, нет возможности для этого в Windows. Некоторые программы Windows могут использовать переменную среды TZ, но те, которые это делают, не обязательно интерпретируют ее правильно, поскольку они не подключены для поддержки имен часовых поясов IANA. Подробнее об этом здесь и здесь.

Ответ 2

Создайте новый пустой каталог для отдельного профиля пользователя Chrome. Например, с

mkdir ~/chrome-profile

Вы указываете переменную окружения TZ. Вы можете увидеть действительные часовые пояса, например здесь, в колонке TZ.

Чтобы запустить Chrome, используйте следующие команды:

  • для Mac OS X: TZ='US/Pacific' open -na "Google Chrome" --args "--user-data-dir=$HOME/chrome-profile"
  • для Linux: TZ='US/Pacific' google-chrome "--user-data-dir=$HOME/chrome-profile"

Ответ 3

Я изменил скрипт, который открывает новый экземпляр Chrome, чтобы также позволить спуфинг часового пояса через переменную среды TZ. Вы можете найти его здесь: https://gist.github.com/prasadsilva/225fd0394a51e52bf62f

Ответ 4

По популярному спросу (шучу!), Объяснение.

Google Chrome считывает переменные среды, чтобы получить доступ к часовому поясу. Очевидно, что все экземпляры Chrome используют значение (не тестируется). Чтобы заставить часовой пояс, нам необходимо: a) установить переменную окружения в требуемый часовой пояс; b) убить все существующие экземпляры Chrome; c) распечатать текущий часовой пояс для подтверждения и d) запустить Chrome с заданным часовым поясом.

Следующий сценарий оболочки протестирован с OS X, но должен работать и для других.

export TZ='US/Pacific'

killall Chrome
date
open /Applications/Google\ Chrome.app

Ответ 5

Chrome, похоже, обновляет TimeZone, как только вы меняете его в Windows. Кажется, что Firefox сохраняет значение часового пояса системы при запуске.

С Visual Studio похоже, что вы можете превратить трюк в свою голову. Кажется, что Часовой пояс читается только при первом запуске процесса отладки. Итак, в моем случае, я сделал, чтобы установить TimeZone, например, в Eastern Standard Time. Запустите отладчик Visual Studio. Затем я изменил TimeZone, например, в Pacific Standard time. Сервер в этот момент остался в восточном часовом поясе, а мой браузер находился в тихоокеанском часовом поясе. Теперь я смог проверить поведение браузера клиента просто отлично.

Если вы хотите протестировать клиента в Японии, просто обновите TimeZone, и браузер последует за ним. До тех пор, пока вы не перезапустите процесс отладки, часовой пояс вашего сервера не изменится. Также просто не изменилось время (в отличие от часового пояса).

Ответ 6

Старый вопрос, но у меня была аналогичная проблема, и я все равно отправлю свое решение.

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

Затем я изменил настройки времени в виртуальной машине, чтобы между клиентом и сервером была какая-то разница.

Ответ 7

Это простой способ, которым я пытался изменить часовой пояс и проверить его для Windows 7 ^ Я использую tzutil

tzutil/s "Eastern Standard Time" и сохраните его в соответствующем файле .bat например Eastern_Standard_Time_zone.bat и используйте default_time_zone.bat чтобы использовать ваш первоначальный системный часовой пояс, чтобы вернуть его после окончания сеанса. это мгновенно изменит часовой пояс. Справка

Ответ 8

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