Тоже сделал вариант. В связи с чем вопрос: я задаю время в миллисекундах (30 сек), т.е. по идее должно отображаться только 30 сек. Откуда там 3 часа берется?)))
p.s.: с датой работаю буквально второй раз
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
</style>
<script type="text/javascript">
var x = new Date().getTime() + 30000;
function backTimer() {
var j = document.getElementsByTagName('div')[0];
var i = new Date().getTime();
if(i < x) {
j.innerHTML = new Date(x - i).toLocaleTimeString();
setTimeout(backTimer, 500);
} else {
j.innerHTML = "00:00:00";
}
}
</script>
</head>
<body onload="backTimer();">
<div></div>
</body>
</html>