期間指定で表示を切り替えたい時のPHP(コピペでオッケー)

2015年12月7日
とっつぁん
その他
この記事は 3 分くらいで読めると思います
期間を指定して表示を変えたい
期間を指定して表示を変えたい

○月○日から表示を変えたい!

期間を指定して表示を変えたい

期間を指定して表示を変えたい

もうすぐお正月ですね。(現在2015/12/07)

一般企業の方は楽しい楽しいお正月休みが待ってますね。

ちなみにワタクシは正月なんて関係ない感じですけど、そう、毎日がエブリディさっ!


 

はい、今回もWEBデザインのお話です。

クライアントさんから「1月1日からはこの画像を表示して欲しい。」だとか、

「1月3日から初売りお年玉チラシをアップして欲しい」とか

そういう未来の期間を指定して表示させて欲しい依頼って結構ありますよね?

そんな時のPHPの書き方です。

指定の期間を過ぎたら表示する

まずは指定の期間を過ぎたら表示させたい時。

例えば2015年12月5日から「ヒーハー!!ヽ(*´∀`)ノ キャッホーイ!!」という表示をしたい場合。

<?php
date_default_timezone_set('Asia/Tokyo');

if (strtotime(date('Y-m-d H:i')) > strtotime('2015-12-04 23:59')) 
{
echo 'ヒーハー!!ヽ(*´∀`)ノ キャッホーイ!!';
}
?>

と書きます。

2015年12月4日23時59分より後なら「ヒーハー!!ヽ(*´∀`)ノ キャッホーイ!!」を表示する、という指定です。

これでクライアントから「1月1日からこの表示をお願い!」と言われた時に休日出勤しなくて済みますね(笑)

指定の期間まで表示する

次に、指定の期間まで表示して、それを過ぎると非表示にしたい時。

例えば2015年12月4日まで表示させて12月5日からは非表示にしたい場合。

>の向きが変わるだけです(笑)

<?php
date_default_timezone_set('Asia/Tokyo');

if (strtotime(date('Y-m-d H:i')) < strtotime('2015-12-04 23:59')) 
{
echo 'ヒーハー!!ヽ(*´∀`)ノ キャッホーイ!!';
}
?>

複雑な期間の指定がある場合

まぁ○日から表示~、とか○日まで表示~くらいならいいのですが…

○日まではこれで、×日まではこれ

それから△日まではこれで、◇日すぎたらこれ

日付を書いた画像なんかでキャンペーンを表示したりしているとこういう事が必要になって来ますね。

こんな場合は単純にelseifをつかって指定を増やすことが可能です。

<?php
date_default_timezone_set('Asia/Tokyo');

if (strtotime(date('Y-m-d H:i')) < strtotime('2015-12-04 23:59')) 
{
echo '2015年12月4日23時59分より前の表示';
}
elseif (strtotime(date('Y-m-d H:i')) < strtotime('2015-12-05 23:59')) 
{
echo '2015年12月4日23時59分より後の場合で2015年12月5日23時59分より前の表示';
}
elseif (strtotime(date('Y-m-d H:i')) < strtotime('2015-12-06 23:59')) 
{
echo '2015年12月5日23時59分より後の場合で2015年12月6日23時59分より前の表示';
}
elseif (strtotime(date('Y-m-d H:i')) > strtotime('2015-12-06 23:59')) 
{
echo '2015年12月6日23時59分より後の表示';
}
?>

コード内にも書いていますが、

  1. 2015年12月4日23時59分より前の表示
  2. 2015年12月4日23時59分よりの場合で2015年12月5日23時59分よりの表示
  3. 2015年12月5日23時59分よりの場合で2015年12月6日23時59分よりの表示
  4. 2015年12月6日23時59分よりの表示

こんな感じです。

まぁ該当日に仕事をしていないので、日時の指定、書き間違えには注意をしなければいけませんけどね…