2025/06/23
【PHP】日時を自動判別して表示を出し分ける方法
募集期間を設けているフォームが掲載されているキャンペーンサイトを作っていると、「募集のステータスを時間によって自動で切り替えたい」という場面はよくあります。
- 募集開始前には「現在準備中」
- 募集中は「応募はこちら」
- 募集が終わったら「現在集計中」
- そして最終的に「結果発表」
こうしたステータスを自動で切り替える方法を、PHPで実装する方法をご紹介します。
仕組みのポイント
PHPで現在の時刻を取得し、strtotime() を使って比較します。
比較対象になるのは以下の3つの時刻:
- 募集開始日時
- 募集終了日時
- 結果発表日時
また、タイムゾーンを Asia/Tokyo に設定して、日本時間で動くようにします。
実装コード
上記をふまえて、実装するコードは以下となります。
<?php date_default_timezone_set('Asia/Tokyo'); // 日本時間に設定 $startDate = '2025-06-23 10:00:00'; // 募集開始日時 $endDate = '2025-06-24 10:00:00'; // 募集終了日時 $resultDate = '2025-06-25 10:00:00'; // 結果発表日時 $now = strtotime(date('Y-m-d H:i:s')); $start = strtotime($startDate); $end = strtotime($endDate); $result = strtotime($resultDate); if ($now < $start) { echo "募集開始前"; } elseif ($now >= $start && $now < $end) { echo "募集中"; } elseif ($now >= $end && $now < $result) { echo "集計中"; } else { echo "結果発表"; } ?>
例えば、今が 2025-06-23 09:00:00 の場合、
$now < $start に該当 → 募集開始前 と表示されます。
今が 2025-06-23 11:00:00 なら、
$now >= $start && $now < $end に該当 → 募集中! と表示されます。
注意点
date_default_timezone_set('Asia/Tokyo');
これを最初に書いておくことで、PHPが使用するタイムゾーンを「日本時間(Asia/Tokyo)」に設定できます。
サーバーのタイムゾーンが日本時間であれば問題ないですが、たとえば海外のサーバーを使っている場合など、異なるタイムゾーンで動作する可能性があります。
そのため、予期せぬ時差によるバグを防ぐためにも、スクリプト内で明示的に設定するのが安全です。最初の1行でしっかり設定しておきましょう。
時間の比較を使えば、ステータスを自動で切り替えるのは可能なため、「今がどのフェーズか」を自動判定する仕組みが必要な際はぜひ取り入れてみてください。
コーディング業務のご依頼、ご相談の詳細についてはこちらから
最後までお読みいただき、ありがとうございました。
よろしければシェアしていただければ幸いです。
次の記事へ | 前の記事へ |
WEB業界ならqam!qam(カム)はWEB業界で働く人や興味がある人に役立つ情報サイトです。
マーケティングやデザイン、マークアップ(コーディング)、プログラム、トレンドなどの情報をqamライター陣が執筆。噛めば噛むほど(読めば読むほど)制作・開発や運営・運用、業界知識やノウハウを学ぶことができます。