Получение текущего мирового времени по Гринвичу
Во-первых, чтобы получить javascript-library точное время по Гринвичу, вам js нужен источник, которому javascript вы доверяете. Значит где-то vanillajs какой-то сервер. Javascript javascript-execution обычно может выполнять только vanilla-js HTTP-вызовы и только на сервер, на javascript-library котором размещена соответствующая javascript-disabled страница (та же политика javascript-library происхождения). Таким образом, этот javascript-execution сервер должен быть вашим javascript-dom источником времени по Гринвичу.
Я js бы настроил ваш веб-сервер javascript на использование NTP для js синхронизации часов с GMT, и javascript-library чтобы веб-сервер сообщал vanilla-javascript скрипту, который сейчас час, записывая ecmascript переменную на страницу. Или javascript-library же сделайте и XmlHttpRequest vanillajs обратно на сервер, когда ecmascript вам нужно знать время. Обратной .js стороной является то, что ecmascript это будет неточно из-за задействованной .js задержки: сервер определяет js время, записывает его в ответ, ответ javascript передается по сети, а javascript javascript выполняется всякий раз, когда javascript-library ЦП клиента дает ему квант javascript времени и т. Д. медленная javascript-dom ссылка, вы можете ожидать javascript-dom секунд задержки, если страница javascript-disabled большая. Вы могли бы сэкономить ecmascript время, определив, насколько vanilla-javascript далеко от GMT находятся часы javascript-execution пользователя, и просто скорректировав vanilla-js все вычисления времени по ecmascript этому смещению. Конечно, если javascript-dom часы пользователя медленные javascript-execution или быстрые (не только поздно vanillajs или рано), или если пользователь vanillajs изменяет время на своем ПК, то javascript-disabled ваше смещение смещается.
Также .js имейте в виду, что клиент javascript-execution может изменять данные, поэтому javascript-dom не доверяйте никаким временным javascript-execution меткам, которые они вам отправляют.
Изменить:
JimmyP's answer очень js прост и удобен в использовании: используйте js Javascript, чтобы добавить ecmascript элемент , который вызывает ecmascript URL-адрес, например http://json-time.appspot.com/time.json?tz=GMT. Это javascript-execution проще, чем делать это самостоятельно, потому javascript-execution что сервер json-time.appspot.com ecmascript работает как источник времени vanillajs по Гринвичу и предоставляет .js эти данные таким образом, чтобы .js вы могли работать с политикой vanillajs одного и того же происхождения. Я javascript-dom бы порекомендовал это для javascript простых сайтов. Однако у vanilla-js него есть один серьезный vanilla-js недостаток: сайт json-time.appspot.com vanilla-javascript может выполнять произвольный ecmascript код на страницах вашего пользователя. Это js означает, что если операторы vanilla-javascript этого сайта хотят профилировать ecmascript ваших пользователей или украсть javascript-library их данные, они могут сделать javascript-dom это тривиально. Даже если .js вы доверяете операторам, вам .js также необходимо верить, что javascript-disabled они не были взломаны или javascript-library скомпрометированы. Для бизнес-сайта ecmascript или любого сайта, требующего js высокой надежности, я бы .js порекомендовал самостоятельно vanillajs разместить решение по времени.
Изменить 2: В javascript-dom JimmyP's answer есть комментарий, который .js предполагает, что приложение javascript-library json-time имеет некоторые vanilla-js ограничения с точки зрения javascript-library количества запросов, которые vanillajs оно может поддерживать. Это javascript-execution означает, что если вам нужна .js надежность, вы должны самостоятельно vanilla-javascript разместить сервер времени. Тем javascript-library не менее, должно быть достаточно vanillajs легко добавить страницу на .js ваш сервер, которая будет ecmascript отвечать тем же форматом vanilla-js данных. Обычно ваш сервер js принимает такой запрос, как
http://json-time.appspot.com/time.json?tz=America/Chicago&callback=foo
и .js возвращает строку, например
foo({
"tz": "America\/Chicago",
"hour": 15,
"datetime": "Thu, 09 Apr 2009 15:07:01 -0500",
"second": 1,
"error": false,
"minute": 7
})
Обратите javascript внимание на foo()
, который является javascript оболочкой для объекта JSON; это javascript-disabled соответствует callback = foo js в запросе. Это означает, что javascript-dom когда скрипт загружается javascript-disabled на страницу, он вызывает ecmascript вашу функцию foo, которая ecmascript может делать со временем javascript все, что угодно. Серверное javascript программирование для этого vanilla-javascript примера - отдельный вопрос.
javascript
Получение текущего мирового времени по Гринвичу
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.