1

PHPでカウントダウンタイマーを作成しようとしています。ユーザーがボタンをクリックすると、現在の日付と時刻がデータベース エントリに保存されます。次に、そのエントリと現在の日付と時刻の差を取得し、差が 48 時間より大きい場合は「doSomething」を実行する必要があります。

私の問題は、実際のカウントダウンにあります。

私は次のことを試しましたが、役に立たず、両方の文字列の差をカウントするだけで、日数は考慮されません。それだけでなく、結果の違いが間違って表示されているようにも見えます。

$d1=strtotime("2012-07-08 11:14:15");
$d2=strtotime("2012-07-09 12:14:15");
$diff = round(abs($d1 - $d2));
$cd = date("H:i:s", $diff);
echo $cd;

StackOverflowのやんくんを助けてくれてありがとう!以下に提出されたコードが解決策でした!カウントダウンを時間:分:秒で厳密に表示するために、printf() コードを次のように置き換えました。

$hours = ($result->d*24)+$result->h;
$minutes = $result->i;
$seconds = $result->s;
echo $hours . ":" . $minutes . ":" . $seconds;
4

2 に答える 2

2

代わりにこれを試してください:

$d1 = new DateTime("2012-07-08 11:14:15");
$d2 = new DateTime("2012-07-09 12:14:15");
$result = $d1->diff($d2);

printf('difference is %d day(s), %d hour(s), %d minute(s)', $result->d, $result->h, $result->i);

編集: PHP 5.3 が利用できない場合は、この回答で説明されているように、時刻を UNIX エポック タイムスタンプに変換できます。

于 2012-11-20T13:20:45.320 に答える
0

これがあなたが望むものであるかどうかわからない:

$d1=strtotime("2012-11-18 11:14:15");//2 days earlier
$d2=strtotime("2012-11-20 11:14:15");//today
$diff = $d2 - $d1; //difference in seconds.

$hours = $diff/60/60;//translation to minutes then to hours

echo $hours;

if($hours>48){
    echo "Script";
}
于 2012-11-20T13:31:27.987 に答える