Как создать часы на JS c привязкой к серверному времени?
При загрузке страницы передаете время сервера.
На клиенте берете текущее время, вычисляете насколько оно отличается от серверного.
Затем по setInterval() раз в секунду берете время клиента, применяете к нему поправку, и обновляете циферки на дисплее.
Делать сам отсчет на setInterval(..., 1000) - идея так себе, потому что он вообще не гарантирует, что следующий вызов функции будет через секунду. Он гарантирует, что вызов будет НЕ РАНЬШЕ ЧЕМ через секунду. Ну и есть еще замедление работы при переключении вкладки, сворачивании окна, а так же уход компьютера в сон, гибернацию, вот это все.
Ну при загрузки страницы отдаете таймстамп серверного времени, а на клиенте сетинтервалом поддерживаете. Если надо именно до конца рабочего дня, то проще на сервере вычесть "сколько до конца - текущее время = осталось", этот остаток и скидываете клиенту и опять же каким-нибудь интервалом минусуете по секунде.