WEB業界で働く人や興味がある人に役立つ情報サイト“qam(カム)”

K.K.

2025/06/23

【PHP】日時を自動判別して表示を出し分ける方法

投稿者: K.K.
カテゴリー: プログラム >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ライター陣が執筆。噛めば噛むほど(読めば読むほど)制作・開発や運営・運用、業界知識やノウハウを学ぶことができます。

トップへ