【PHP】期間(日付)での条件分岐

公開日:
更新日:
カテゴリー: PHP

サイトの運営では、○月○日~○月○日まではこのコンテンツを表示させ、それ以外はこれ、というように期間で表示させたいコンテンツを変えたい時があります。

その場合はif構文を使うのですが、ここではその方法を説明したいと思います。

date関数を使用する

日付での条件分岐となるので、日付を取り扱うdate関数を利用します。

date()

date関数の引数にフォーマットを渡してあげれば、現在時間をそのフォーマットに従って出力してくれます(オプションで第2引数に任意の時間を渡すことも可能)。

date(md)

例として、上のようにすると、「1218」となります(今日は2013年12月18日)。2013年9月8日の場合は「0908」となります。

期間での条件分岐

では実際に、date関数を利用して指定した期間での条件分岐をしてみたいと思います。

例として、「2月4日~5月4日」での条件分岐を行うPHPソースを以下に記述します。

<?php
//date(md)で日付を○○○○という4桁の数字に変換し、10000を加算する
$date = 10000 + date(md);
//if構文で条件分岐
if( $date >= 10204 && $date <= 10504 ){
	//ここに指定した期間中に表示させるコンテンツ
}else{
	//ここに指定した期間中以外に表示させるコンテンツ
};
?>

ここでのポイントは、「10000」という数字です。それに○○月○○日の○○○○を足すと、5桁の数字になります。つまり、日付を数字に置き換え、その後数字の大小で条件を分岐させています。

この方法を利用することで、期間(日付)での条件分岐が可能になります。

なお、コンテンツ部分をechoやprintなどで出力したり、エスケープ処理をしたりするのが面倒な場合、次のようにしてもOKです。

例として「2月4日~5月4日」「5月5日~8月6日」「8月7日~11月6日」「11月7日~2月3日」の二十四節気で季節を分けてコンテンツを出力してみます。

<?php $date = 10000 + date(md); ?>
<?php if( $date >= 10204 && $date < 10505 ): ?>
	ここにコンテンツ
<?php elseif( $date >= 10505 && $date < 10807 ): ?>
	ここにコンテンツ
<?php elseif( $date >= 10807 && $date < 11107 ): ?>
	ここにコンテンツ
<?php else: ?>
	ここにコンテンツ
<?php endif; ?>

 

頑張って書いたのでちょろっと読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント