ホームページ制作のためになるTopics

PHP で日付比較!覚えておくと便利!

  • カテゴリー:PHP

月初や月末は、キャンペーンの入れ替えなどで作業が集中してしまうこと、よくありますよね。
当然のことながら、出来る限りタイムリーに差し替えをしてあげたい。というのが心情ですが、ご依頼いただいたサイトを全ていっぺんに作業することはできません。

そんな時に覚えておくと便利なのが、PHPで日付を比較して、 ・今日だけ表示
・もし過去なら過去の内容
・もし未来なら未来の内容

といったように、表示を切り替えることができます。

まずは、コピペで!

<?php
$today = date("Y/m/d");
$target_day = "2016/06/10";
if(strtotime($today) === strtotime($target_day)){
echo "今日だけ表示";
}else if(strtotime($today) > strtotime($target_day)){
echo"過去の内容";
}else{
echo "未来の内容";
}
?>

上記を簡単に解説すると
もし今日が、2016年6月10日なら、「今日だけ表示」
もし今日が、2016年6月10日より大きければ、「過去の内容」
それ以外なら、「未来の内容」
が表示されます。

「今日だけ表示」の必要がなくて、今の内容を 2016年6月10日 に新しい内容に変更したい。
という場合は、

<?php
$today = date("Y/m/d");
$target_day = "2016/06/09";  //変更したい前日
if(strtotime($today) > strtotime($target_day)){ //右(2016/06/09)より大きい
echo "未来の内容";
}else{
echo "過去(今)の内容";
}
?>


または、

<?php
$today = date("Y/m/d");
$target_day = "2016/06/10";  //変更したい日
if(strtotime($today) >= strtotime($target_day)){ //右(2016/06/10)以上
echo "未来の内容";
}else{
echo "過去(今)の内容";
}
?>


でOKです。
「>」と「>=」の違いです。上記の場合で説明しますと、
「>」は、2016/06/09 を含まない。
「>=」は、2016/06/10 を含む。◯◯以上 とい概念です。

PHP 内で HTML を書く場合

HTMLでは、

<?php
echo "<div class="style">"
?>


といったように「”」ダブルクォーテーションをほとんどの場合は出力しなければなりませんよね。
しかし、上記のように書くとエラーになります。
PHPの「”」ダブルクォーテーションとHTMLの「”」ダブルクォーテーションが、喧嘩してしまうからです。

そのような場合は、HTMLの「”」ダブルクォーテーションの前に「\(バックスラッシュ)」を入れてあげます。

<?php
echo "<div class=\"style\">"
?>


こんな感じです。

または、PHPの「”」ダブルクォーテーションを「’」シングルクォーテーションに変えてあげます。

<?php
echo '<div class="style">'
?>


こんな感じです。

冒頭の日付を比較して表示を切り替えるPHPに組み入れると以下のようになります。

<?php
$today = date('Y/m/d');
$target_day = '2016/06/10';
if(strtotime($today) > strtotime($target_day)){
echo '<div class="style">未来の内容</div>';
}else{
echo '<div class="style">過去(今)の内容</div>';
}
?>

もっと簡素化できる書き方もありますが、基本を覚えておくと便利です。
作業集中時期を少しでも分散できればと思います。

その他のTopics