Самый простой ответ - просто узнать текущее время с вашего сервера, поскольку это позволяет избежать проблем с несколькими источниками.
- Каждая ОС имеет механизм , который синхронизирует локальные часы с более надежным источником хронометража (таким как атомные часы NIST). Если это еще не сделано, настройте сервер на синхронизацию его часов с одним из этих источников.
- Это довольно тривиально - написать скрипт на выбранном вами языке, который возвращает текущее время в виде объекта JSON. Менее тривиальным является обеспечение того, чтобы скрипт возвращал время в соответствующем часовом поясе, учитывая DST (летнее время) - независимо от того, является ли ET UTC-5 или UTC-4. Многие фреймворки позаботятся об этом за вас, но некоторые этого не сделают.
Имейте в виду, что вы все еще не гарантируете (и не можете) гарантировать точность второго разрешения. Запрашивая время у вашего сервера, вы полностью зависите от условий сети, которые вы не можете измерить с помощью JavaScript. Один клиент может получить запрос времени AJAX за десятки миллисекунд, в то время как другим с низкокачественными соединениями может потребоваться даже десятки секунд .
Фактически, во многих случаях может быть более надежным использовать клиентские часы, поскольку они также будут синхронизироваться с надежным источником времени через NTP. Я считаю, что в Windows синхронизация NTP включена по умолчанию. Лучше всего сделать запрос AJAX на текущее время и дату сервера, а если время на локальном компьютере находится в пределах примерно 20 секунд от времени сервера, просто используйте местное время.