0

だからここに私がする必要があるものがあります:

  • データベースから時刻を取得します (データベースのことは今のところ気にしないでください)
  • 日、時間、分でのカウントダウン時間
  • カウントダウンが 0 になったら、カウントダウンに 7 日を追加し、エピソード数に 1 を追加します
  • エピソード数が特定の数に達するまで複数回繰り返します(データベースによって設定されます。現時点ではデータベースのことについてあまり心配する必要はありません)。その後、カウントダウンを停止し、Aired をエコーし​​ます

基本的に、テレビ番組の放映時間の次のエピソードまでカウントダウンし、次のエピソード番号を表示します。これは、すべてのエピソードが放映されるまで続きます。

これは私が現在持っているものです。ある程度は機能しますが、+7 日/++ エピソードが 1 回しかなく、その後カウントダウンがマイナスになります. while ループなどを試してみましたが、うまくいきませんでした。

$date = "February 12, 2013 5:06 PM";
$date = strtotime($date);
$remaining = $date - time();

$episode = 0;

if ($remaining < 0) {
++$episode;
$remaining = strtotime("+7 day", $date) -time();
}

$days_remaining = floor($remaining / 86400);
$hours_remaining = floor(($remaining % 86400) / 3600);
$mins_remaining = floor(($remaining % 86400 % 3600) / 60);

if ($episode == 3){
 echo "Aired";
} else {
echo "$days_remaining:$hours_remaining:$mins_remaining Ep $episode";
}

アドバイスをいただければ幸いです。

4

1 に答える 1

0

もちろんマイナスになります。

0 になった後$remaining、さらに 7 日が追加されます。

if ($remaining < 0) { // remaining: less than 0 days
++$episode; // episode becomes 1
$remaining = strtotime("+7 day", $date) -time(); // remaining: less than 7 days
}

ただし、さらに 7 日後、$remainingまだマイナスであり、7 日だけ追加されます。データベースに保存$episodeしていないため、コードによるとまだ 0 です。

$episode = 0; // $episode starts at 0 according to the code
if ($remaining < 0) { // remaining: less than -7 days
++$episode; // episode becomes 1

したがって、負の数を数え続け、 を与えます$episode == 1

代わりにこれを行う必要があります。

$date = strtotime("February 12, 2013 5:06 PM");
for ($i = 0; $i < 3; $i++) {
    $episodes[$i+1] = strtotime("+". 7*$i ." day", $date);
    $remainings[$i+1] = $episodes[$i+1] - time();
}
foreach ($remainings as $key => $remaining) {
    if ($remaining > 0) {
        $episode = $key;
        $days_remaining = floor($remaining / 86400);
        $hours_remaining = floor(($remaining % 86400) / 3600);
        $mins_remaining = floor(($remaining % 86400 % 3600) / 60);
        break;
    }
}
if (!isset($episode)){
    echo "Aired";
} else {
    echo "$days_remaining:$hours_remaining:$mins_remaining Ep $episode";
}
于 2013-02-15T18:14:18.170 に答える