日付指定である部分だけを変更したいというときは、指定する日付と、閲覧している現在の日を数字化して比較する。

<?php
  // 例
  //日付をstrtotime()で変換して比較
  $time1 = strtotime("2017/01/01/ 00:00:00");
  $time2 = strtotime(date("Y/m/d H:i:s"));

  if ($time1 <= $time2) {
    echo "指定した日になりました。";
  } else {
    echo "まだ指定した日になっていません。";
  }
?>

 

2024/11/01追記

この時間比較にちょっとした手間を追加したほうがいいという情報がありました。

それはこのPHPを実行するサーバーの時間が、ユーザーがいる場所と合っているとは限らないとのこと。

例えばこのPHPを実行するファイルを置いているサーバーが海外として、日本でWeb閲覧により実行されると日本基準の時刻でデータを取得されるとは限らないそう。標準のままだとサーバー基準になるのだとか。

その為、日本の時刻を基準として時間取得しますよという宣言をした方が良いということで、以下の文を時間取得する前に追加します。

 

date_default_timezone_set ('Asia/Tokyo');

 

これの後からdate()関数で取得する時間は日本基準で時間を取得するそうです。

これらを合わせ、phpで時間比較し、文字表示を変更するプログラムを関数にしてみたものを例文にしました。

 

//日付の比較チェック
function check_daypass($day) {
  date_default_timezone_set ('Asia/Tokyo');
  $today = strtotime(date("Y-m-d H:i:s"));
  $set_day = strtotime($day." 23:59:59");
  if($set_day <= $today) {
    return true;
  } else {
    return false;
  }
}

お値段 ¥<?php echo (check_daypass(2024-10-31)) ? "110" : "100"; ?> 円

 

みたいにすると、10月に入るまでは100が出力し、11月に入ると110の数値が出力されるという仕組みになります。

時限装置的に準備できると、日付変わってから文字の入れ替え作業するという面倒くさいことを避けられそうです。