我正在寻找一种从给定日期开始每秒自动递增一个数字的方法,并且当我在页面上时它必须更新。 例如,我决定今天在12.00.00,计数器将从0开始,然后必须每秒更新一次(1在12.00.01,2在12.00.02,依此类推),我想看到数字正在改变这页纸。如果两个访问者在同一秒加载页面,他们将看到相同的数字,并且数字的增长将同步。我该怎么做?我是javascript的新手,我找到了这个小提琴 http://jsfiddle.net/dm6LL/5/
var amount = document.getElementById('amount');
var start = new Date("August 15, 2012 00:00:00").getTime();
var current;
update();
function update() {
var current = (new Date().getTime() - start)/1000*0.158+138276343;
amount.innerText = formatMoney(current);
}
setInterval(update,1000);
function formatMoney(amount) {
var dollars = Math.floor(amount).toString().split('');
var cents = (Math.round((amount%1)*100)/100).toString().split('.')[1];
if(typeof cents == 'undefined'){
cents = '00';
}else if(cents.length == 1){
cents = cents + '0';
}
var str = '';
for(i=dollars.length-1; i>=0; i--){
str += dollars.splice(0,1);
if(i%3 == 0 && i != 0) str += ',';
}
return '$' + str + '.' + cents;
}
这与我的目标相似,但它运行的是金钱,而这并非我所需要的。
答案 0 :(得分:0)
你很亲密。您只需对更新功能进行微小更改即可。你可以跳过你的
formatMoney
功能。
尝试这样的事情:
function update() {
var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var current = (new Date().getTime() - start);
var diffDate = new Date(current);
var days = Math.round(current/oneDay);
amount.innerText = days + ":" + diffDate.getUTCHours() + ":" + diffDate.getUTCMinutes() + ":" + diffDate.getUTCSeconds();
}
基本上,它会获得开始和当前之间的差异,并将其放入amount
而不是货币值。
还有oneDay
来计算两个日期之间的天数。
您可以根据需要格式化输出,但这应该是您的开始。