Тоже сделал вариант. В связи с чем вопрос: я задаю время в миллисекундах (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>