実装方法によって異なります。
時間を一度読み取って、精度を setInterval または setTimeout に依存する場合は、はい .. それらは同期しなくなる可能性があります。
計算で使用するために常に現在の時刻を取得すると、システムの残りの部分が同期しなくなるのと同じように、同期がずれることがあります...つまり、コンピューターのクロックに従います。
JavaScript / jQueryカウントダウンでの回答を変更して、取得するミリ秒を追加します
var end = new Date('13 Apr 2012 13:30:00');
var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour *24;
var timer;
function showRemaining()
{
var now = new Date();
var distance = end - now;
if (distance < 0 ) {
// handle expiry here..
clearInterval( timer ); // stop the timer from continuing ..
//alert('Expired'); // alert a message that the timer has expired..
}
var days = Math.floor(distance / _day);
var hours = Math.floor( (distance % _day ) / _hour );
var minutes = Math.floor( (distance % _hour) / _minute );
var seconds = Math.floor( (distance % _minute) / _second );
var milliseconds = distance % _second;
var countdownElement = document.getElementById('timer');
countdownElement.innerHTML = days + 'd ' +
hours + 'h ' +
minutes + 'm ' +
seconds + 's ' +
milliseconds + 'ms';
}
timer = setInterval(showRemaining, 10);
ただし、28 ~ 31 日の月とうるう年を因数分解するには、より複雑な計算が必要になるため、月と年は処理されません。
http://jsfiddle.net/TaHtz/2/のデモ