Наверное, надо написать что-то похожее на
cинхронизацию времени между клиентом и серверами в NTP. Это потребует нескольких запросов к серверу, чтобы оценить время отклика – т.е. не сразу с загрузки страницы удастся точно запустить таймер. Показать его можно сразу, и в течение следущих секунд скорректировать. Есть готовое решение:
NTPJS, не пробовал.
В простейшем варианте можно обойтись одним AJAX запросом после полной загрузки страницы. Запомнить текущее локальное время
var tPing = (new Date).getTime();
, запросить ajax'ом с сервера его текущее время
tServ
, получить ответ и запомнить локальное время
tPong
, когда ответ получен. И положиться на очень грубую гипотезу, что сервер ответил точно посередине интервала tPing..tPong. Т.е. решить, что разница серверного времени и локального составляет ровно
tDiff = tServ - tPing + (tPong - tPing) / 2;
Теперь для получения предполагаемого серверного «точного» времени, просто прибавлять к текущему локальному времени этот tDiff.