指定した日時によって自動で表示を切り替えたり変化させるPHPネタ

  • 20
    いいね
  • 4
    コメント
この記事は最終更新日から1年以上が経過しています。

PHPを使って自動でサイトを更新するためのまとめ。
キャンペーン告知や応募受付に。

※さらにスマートな書き方をコメント欄にていただいたので追記しました。

指定日時まで表示し、過ぎたら非表示にする

<?php
if (strtotime(date('Y-m-d H:i')) < strtotime('2015-10-10 8:00'))
{
echo '2015-10-10 7:59まで表示する内容';
}
?>

追記

<?php
if (date('Y-m-d H:i') < '2015-10-10 08:00'): ?>
 2015-10-10 7:59まで表示する内容
 (複数行可)
<?php endif; ?>
<?php
$closeTime = new DateTime('2015-10-10 8:00');
if (new DateTime < $closeTime): ?>
 2015-10-10 7:59まで表示する内容
 (複数行可)
<?php endif; ?>

指定日時を過ぎたら表示する

<?php
if (strtotime(date('Y-m-d H:i')) >= strtotime('2015-10-10 8:00'))
{
echo '2015-10-10 8:00~表示する内容';
}
?>

追記

<?php
if (date('Y-m-d H:i') >= '2015-10-10 08:00'): ?>
 2015-10-10 8:00~表示する内容
 (複数行可)
<?php endif; ?>
<?php
$startTime = new DateTime('2015-10-10 8:00');
if (new DateTime >= $startTime): ?>
 2015-10-10 8:00~表示する内容
 (複数行可)
<?php endif; ?>

表示される期間を指定する

<?php
$foo = strtotime(date('Y-m-d H:i'));
if ($foo >= strtotime('2015-10-10 8:00') && $foo < strtotime('2015-10-10 20:00'))
{
echo '2015-10-10 8:00~19:59まで表示する内容';
}
?>

追記

<?php
$now = date('Y-m-d H:i');
if ($now >= '2015-10-10 08:00' && $now < '2015-10-10 08:00'): ?>
 2015-10-10 8:00~19:59まで表示する内容
 (複数行可)
<?php endif; ?>
<?php
$now = new DateTime();
$startTime = new DateTime('2015-10-10 8:00');
$closeTime = new DateTime('2015-10-10 20:00');
if ($now >= $startTime && $now < $closeTime): ?>
 2015-10-10 8:00~19:59まで表示する内容
 (複数行可)
<?php endif; ?>

表示/非表示ではなく、内容を変化させたい場合

<?php
date_default_timezone_set('Asia/Tokyo');
if (strtotime(date('Y-m-d H:i')) < strtotime('2015-10-10 8:00'))
{
echo '受付中';
} else {
echo '締め切り';
}
?>

追記

<?php
if (date('Y-m-d H:i') < '2015-10-10 08:00'): ?>
 受付中
<?php else: ?>
 締め切り
<?php endif; ?>

内容が複数行の場合

echoの部分を書き換える

{
echo <<< EOF
2015-10-10
7:59まで
表示する内容
EOF;
}

参考
http://liapoc.com/strtotime.html
http://sole-color-blog.com/blog/php/36/