2017-02-26 4 views
1

私はHH:MM:SS形式のデータベースにタイムスタンプを収集するPHPスクリプトを持っています。私はAJAXを介して1秒ごとに更新されるPHPページを持っています。その目的は、毎秒PHPデータを取得するスクリプトを作成して、カウントダウンタイマーを表示するようなことを行うことができるようにすることです。私はこの形式で2つの違いを表示しようとしています:HH:MM:SS。 IE:2回のエコー差

が生成されます。

19:29:34 

を(そして正確に私のAjaxのスクリプトでカウントアップ、時計として表示されます

$gametimestamp = date("H:i:s", strtotime($gametime)); 

が生成されます

19:19:12 

ことで私のDBからタイムスタンプを引っ張り、$ gamに保存するetime。

私がしようとしているのは、これらの2つの違いがリアルタイムでカウントダウンタイマーのようにエコーアウトされていることです。

$difference = ($currentstampedtime - $gametimestamp); 

何もしません。私はVARをエコーすると、

echo $difference; 

は、私が試してみました

1 

何も作業していない取得します。助けてください。前もって感謝します。

ここ
+1

'strtotime(" now ")'は 'time()'になります。文字列ではなくタイムスタンプを引いてください。例えば'strtotime($ gametime)'と 'time()'です。差は秒単位で表示されます。 – chris85

答えて

1

あなたの現在の時刻を作成して、時間をターゲットにするPHP DateTimeオブジェクトを使用することができます。次に、DateTimeオブジェクトのdiff()関数を使用して差分を取得し、 "00:00:00"と書式設定します。

すなわち:

$now = new DateTime(); 
$target = DateTime::createFromFormat('H:i:s', "01:30:00"); 
$difference = $now->diff($target); 
echo $difference->format("%H:%I:%S"); 

出力:

午後12時57分48秒

はそれがお役に立てば幸いです。

+0

これは今までのところ最も単純で最も洗練されたソリューションです。ありがとうございました。 – Dustin

+0

私がこれを受けたいと思ったら: echo $ difference-> format( "%H:%I:%S"); と設定時間を使用しているカウントダウンタイマーを作成する:30秒、どうすればよいですか? – Dustin

+0

私は分かりません。 '$ target'から' $ target'までの秒数を知りたいのですか? – JazZ

0

は、あなたの答えです:

<?php  
    $difference = time()-strtotime($gametime); 
    // You can retrieve the difference as time 
    echo $currentstampedtime = date("H:i:s", $difference); 
?> 

UPDATE

別の解決策

<?php 
    function get_time_difference($time1, $time2) { 
     $time1 = strtotime("1980-01-01 $time1"); 
     $time2 = strtotime("1980-01-01 $time2"); 
     if ($time2 < $time1) { 
      $time2 += 86400; 
     } 
     return date("H:i:s", strtotime("1980-01-01 00:00:00") + ($time2 - $time1)); 
    } 
    echo get_time_difference("10:25:30", "22:40:59"); // 12:15:29 
?> 
関連する問題