0

データベースに開始時刻、開始日、終了時刻、終了日があるため、一部のコンテンツをしばらくまたは数日だけ表示しようとしています。これにより、今回データベースからデータが取得され、日付がチェックされ、それに応じてコンテンツが表示されます。

私が試した私のコード

$startDateTime = strtotime($result['StartDate']." ".$result['StartTime']);
$endDateTime = strtotime($result['EndDate']." ".$result['EndTime']);
$now = time();

echo "START : ".$startDateTime;
echo "<br/>END : ".$endDateTime;
echo "<br/>CURRENT : ".$now;
if($now >= $startDateTime && $now <= $endDateTime){
echo $result['content'];

}

しかし、毎回コンテンツを表示するのはうまくいきません

私を助けてください

前もって感謝します

4

2 に答える 2

0

time()関数を使用するのではなく、'$ now'をstrtotime( "now")として作成してみてください。

また、デバッグ手順として、比較をエコーし​​て、期待どおりに評価されたかどうかを確認するのに役立つ可能性があります。

実際-私はあなたのコードをそのまま試しました...開始と終了の日時の値をハードコーディングしたことを除いて。そしてそれはうまくいったので、strtotime( "now")を使用するように切り替えてもおそらく違いはありません。

印刷された値は何ですか?あなたは私たちに言わなかった。

したがって、VoronoiPotatoはおそらく正しいです... StartDate/StartTimeおよびEndDate/EndTimeに保存している値には、何か問題があるはずです。

このようにプログラムを変更した場合(デバッグを追加するため)、プログラムの出力はどうなりますか?

$startDateTime = $result['StartDate'] . " " . $result['StartTime'];
$endDateTime = $result['EndDate'] . " " . $result['EndTime'];
$now = time();

echo "START : " . $startDateTime."<br />\n";
echo "END : " . $endDateTime . "<br />\n";

$startDateTime = strtotime($startDateTime);
$endDateTime = strtotime($endDateTime);

echo "Start as time: " . $startDateTime . "<br />\n";
echo "End as time: " . $endDateTime . "<br />\n";

echo "CURRENT : " . $now . "\n";

if (($now >= $startDateTime) && ($now <= $endDateTime)) {
    echo $result['content'];
}
于 2012-08-06T12:34:05.113 に答える
0

$result['StartDate']のリストを出力します。""。$result['StartTime']先行ゼロなど、時間としてキャストするのに問題が発生する可能性があることがわかると思います。

于 2012-08-06T12:34:15.003 に答える