我正在尝试创建一个以年,月,日,小时,分钟,秒和毫秒计数的计时器.我在网上找到了一些指南,但它们有点不容易理解,或者不用毫秒.任何人都可以帮我做这样的事情,比如说,这个星期五13:30.
所以它可以读0y 0m 2d 2h 11m 50ms
并倒数毫秒.我会展示代码来证明我实际上已经尝试过这样做,但这一切都失败了,以至于我会感到尴尬.
我也读过这篇文章,这让我对javascript计时器有点不信任.这是真的吗,他们变得如此不同步?
谢谢你的帮助!
取决于您如何实现它.
如果您读取一次的时间并依赖于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);
Run Code Online (Sandbox Code Playgroud)
但它不能处理月份和年份,因为这需要更复杂的计算,因为28-31天和闰年.
演示http://jsfiddle.net/TaHtz/2/