2016-07-17 3 views
-1

からタイマーをカウントアップ。これは、秒単位の合計として、サーバーの稼働時間を表示し、私は

function secondsToTime($seconds) { 
    $dtF = new \DateTime('@0'); 
    $dtT = new \DateTime("@$seconds"); 
    return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds'); 

I出力secondsToTime($のアップタイム)を使用して、上記の形式での稼働時間を利用して日、時間、分、秒に変換します。新しいアップタイムを得るためにページをリフレッシュする代わりに、ページがロードされると出力が元の出力からカウントアップされるようにしたいと思います。

ありがとうございます。

+0

使用 '新しいのDateTime()' 'の代わりに新しい日時の( '@ 0')'。 – ForceMagic

+0

@ForceMagic私は私の質問でかなり曖昧でした。投稿されたコードはうまく動作し、問題ではありません。私は上記のコードからの出力から数え上げたいと思います。 – JakeGriffin

+0

クライアント側で行うべきです。あなたがその面倒をするつもりなら、あなたは時間を無駄にしています。 JavaScriptがこれに対する解決策であるかもしれませんが、私に例を投稿させてください... – ForceMagic

答えて

1

あなたは、単純なタイマーを作成するためにJavaScriptを使用する必要があります。

var timeelm, time, days, hours, minutes, seconds; 
timeelm = document.getElementById("time"); 
time = timeelm.innerHTML; 
days = parseInt(time.split(" ")[0]); 
hours = parseInt(time.split(" ")[2]); 
minutes = parseInt(time.split(" ")[4]); 
seconds = parseInt(time.split(" ")[7]); 
timerGo(); 

function timerGo() { 
    seconds++; 
    if (seconds == 60) { 
      minutes++; 
     seconds = 0; 
    } 
    if (minutes == 60) { 
      hours++; 
     minutes = 0; 
    } 
    if (hours == 24) { 
      days++; 
     hours = 0; 
    } 
    timeelm.innerHTML = days+" days, "+hours+" hours, "+minutes+" minutes and "+seconds+" seconds"; 
    setTimeout(timerGo, 1000); 
} 

注: WebページがtimeのIDを割り当てられた要素を持っていることを確認します。

チェックアウトthis fiddle

+0

残念ながら、これは、フォーカスを持つページのなすがままになっているPCは、(タイムアウトが悪名高い不正確である)などが遅れていません。元の時間から再計算する方が良い場合や、カウントダウンが間違ってしまう場合があります。 – rjdown

+0

しかし、ユーザがページにアクセスした場合、ページを常にリフレッシュして、ミリ秒の正確な計算を得ることができます。 JavaScriptを使用しているため、サーバー/ Ajaxがこの情報を処理する方法はありません。 – ForceMagic

+0

カウントダウンの内容を確認するためにリフレッシュする必要がある場合は、カウントダウンするのはあまり意味がありません(すぐに不正確になるため)。あなたは元の時間を持っている、あなたは簡単に現在の時間を得ることができます。違いをすべてJSで計算してください。上で述べたように、数千のチュートリアルがあります。 – rjdown

関連する問題