Уродливое, кривое решение через жопу. А главное - нерабочее.
Уже через 5-10 минут использования сайта появятся серьёзные расхождения в дате, т.к. setTimeout
не гарантирует, что следующий запуск будет точно через секунду, он гарантирует только то что запуск будет не раньше чем через секунду. Малейшее подтормаживание и таймер сбит.
Делать надо как-то так было:
<b id="seconds">00:00:00</b>
<script type="text/javascript">
(function(){
var difference = <?php echo time() ?>*1000 - new Date(), //сразу вычисляем разницу между серверным временем и временем на клиенте
block = document.getElementById("seconds");
(function redraw(){
var date = new Date(); //получаем текущую дату клиента
date.setTime( date.getTime() + difference); //прибавляем разницу
block.innerHTML = date.toTimeString().substring(0,8); //форматируем и выводим
setTimeout(redraw, 1000); //запускаем таймер на повтор функции
}())
}())
</script>