You are here: irt.org | FAQ | JavaScript | Date | Q1009 [ previous next ]
Try:
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript"><!--
function y2k(number) { return (number < 1000) ? number + 1900 : number; }
var total = 0;
function start(no) {
resetstartTime();
timeoutID = setTimeout('keepWatching()', 1000);
updateStatus();
}
function stop() {
resetstartTime();
clearTimeout(timeoutID);
updateStatus();
}
function pause() {
paused = !paused;
if (paused) {
clearTimeout(timeoutID);
now = new Date();
pauseTime = Date.UTC(y2k(now.getYear()),now.getMonth(),now.getDate(),now.getHours(),now.getMinutes(),now.getSeconds());
updateStatus();
}
else {
now = new Date();
resumeTime = Date.UTC(y2k(now.getYear()),now.getMonth(),now.getDate(),now.getHours(),now.getMinutes(),now.getSeconds());
pausedMilliseconds = pausedMilliseconds + resumeTime - pauseTime;
timeoutID = setTimeout('keepWatching()', 1000);
updateStatus();
}
}
function keepWatching() {
updateStatus();
timeoutID = setTimeout('keepWatching()', 1000);
}
function resetstartTime() {
now = new Date();
startTime = Date.UTC(y2k(now.getYear()),now.getMonth(),now.getDate(),now.getHours(),now.getMinutes(),now.getSeconds());
pauseTime = 0;
resumeTime = 0;
milliseconds = 0;
seconds = 0;
pausedMilliseconds = 0;
}
function updateStatus() {
if (!paused) {
now = new Date();
milliseconds = Date.UTC(y2k(now.getYear()),now.getMonth(),now.getDate(),now.getHours(),now.getMinutes(),now.getSeconds()) - startTime;
seconds = (milliseconds - pausedMilliseconds) / 1000 - 1;
if (seconds == -1)
seconds = 0;
}
document.time.seconds.value = formatTime(seconds);
}
function formatTime(time) {
var timeSeconds = time % 60;
var timeMinutes = Math.floor(time / 60);
return ((timeMinutes < 10) ? '0' + timeMinutes : timeMinutes) +
':' +
((timeSeconds < 10) ? '0' + timeSeconds : timeSeconds);
}
var timeoutID = 0;
var milliseconds = 0;
var seconds = 0;
var minutes = 0;
var startTime = 0;
var pauseTime = 0;
var resumeTime = 0;
var pausedMilliseconds = 0;
var paused = false;
var now = new Date();
//--></SCRIPT>
</HEAD>
<BODY>
<FORM NAME="time">
<INPUT TYPE="TEXT" NAME="seconds" SIZE="5">
<INPUT TYPE="BUTTON" VALUE="start" onClick="start()">
<INPUT TYPE="BUTTON" VALUE="Pause" onClick="pause()">
<INPUT TYPE="BUTTON" VALUE="Stop" onClick="stop()">
</FORM>