-1

特定の日付から開始して、毎秒数値を自動インクリメントする方法を探しています。ページにいるときにライブで更新する必要があります。たとえば、今日の 12.00.00 にカウンターを 0 から開始し、それから毎秒更新する必要があると決めました (12.00.01 で 1、12.00.02 で 2 など)。ページ。2 人の訪問者が同じ秒でページをロードすると、同じ数が表示され、数の増加が同期されます。どうすればいいですか?私は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;
}

それは私の目標に似ていますが、それはお金で実行され、私が必要としているものではありません.

4

1 に答える 1

1

あなたはかなり近いです。必要なのは、更新機能を少し変更することだけです。また、関数をスキップできます 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();
}

基本的に、start と current の差を取得しamount、金額の代わりにそれを入れます。

そしてoneDay、2 つの日付の間の日数を計算する があります。

必要に応じて出力をフォーマットできますが、これで開始する必要があります。

于 2013-10-23T08:11:36.727 に答える