PHPにおける時間と日付の取り扱いは、ウェブ開発において非常に重要な要素です。特に、ユーザーのローカル時間やサーバーの時間を考慮して、正確な日付と時間を管理することは、アプリケーションの動作において不可欠です。この記事では、PHPでの時間と日付の操作方法について、基本的な使い方から応用的なテクニックまでを、包括的に説明します。
1. PHPでの時間と日付の基本
PHPでは、時間や日付を扱うための標準的な方法として、date()
関数やtime()
関数がよく使用されます。これらの関数は、サーバーの現在の時刻を取得したり、フォーマットを指定して日付や時刻を表示したりすることができます。

1.1 date()
関数
date()
関数は、指定したフォーマットで現在の日付と時刻を返します。例えば、以下のように使用します。
phpecho date("Y-m-d H:i:s");
このコードは、現在の日付と時刻を「年-月-日 時:分:秒」の形式で表示します。出力例は次のようになります。
yaml2025-03-22 14:30:45
date()
関数のフォーマット文字は、様々な形式に対応しています。主なフォーマットは以下の通りです。
-
Y
: 4桁の西暦年(例:2025) -
m
: 2桁の月(01~12) -
d
: 2桁の日(01~31) -
H
: 24時間制の時(00~23) -
i
: 分(00~59) -
s
: 秒(00~59)
1.2 time()
関数
time()
関数は、1970年1月1日から現在までの経過秒数を返します。これは、UNIXタイムスタンプ(エポックタイムとも呼ばれます)と呼ばれ、日付や時刻の計算を行うための基盤となります。
phpecho time();
このコードは、現在のタイムスタンプ(例:1616407200)を返します。この数値を日付形式に変換するには、date()
関数と組み合わせて使用します。
phpecho date("Y-m-d H:i:s", time());
1.3 strtotime()
関数
strtotime()
関数は、文字列として表現された日付や時刻を、タイムスタンプに変換する関数です。この関数を使用することで、ユーザーが入力した日付や時刻を簡単に処理できます。
phpecho strtotime("2025-03-22 14:30:00");
このコードは、指定した日付と時刻をUNIXタイムスタンプに変換して表示します。
2. PHPのタイムゾーン管理
PHPでは、タイムゾーンを設定することが重要です。特に、グローバルなユーザーを対象としたアプリケーションでは、ユーザーごとに異なるタイムゾーンに対応する必要があります。
2.1 タイムゾーンの設定
PHPでは、date_default_timezone_set()
関数を使用してタイムゾーンを設定できます。例えば、日本時間(JST)を設定するには、以下のように記述します。
phpdate_default_timezone_set('Asia/Tokyo');
これにより、以降のdate()
関数やtime()
関数は、日本時間に基づいて動作します。
2.2 タイムゾーンの確認
現在設定されているタイムゾーンを確認するには、date_default_timezone_get()
関数を使用します。
phpecho date_default_timezone_get();
このコードを実行すると、現在設定されているタイムゾーンが表示されます(例:Asia/Tokyo
)。
3. 日付の演算
PHPでは、日付や時刻の計算を行うことも可能です。これには、strtotime()
関数やDateTime
クラスを使用します。
3.1 strtotime()
を使用した日付の加算・減算
strtotime()
関数を使って、日付に対して加算や減算を行うことができます。例えば、1週間後の日付を取得するには次のようにします。
phpecho date("Y-m-d", strtotime("+1 week"));
逆に、1週間前の日付を取得するには次のようにします。
phpecho date("Y-m-d", strtotime("-1 week"));
このように、+1 week
や-1 week
などのフォーマットを指定することで、簡単に日付を計算できます。
3.2 DateTime
クラスを使用した日付の計算
DateTime
クラスは、PHPのオブジェクト指向の方法で日付や時刻を管理するための強力なツールです。例えば、DateTime
を使用して日付の加算・減算を行うことができます。
php$datetime = new DateTime();
$datetime->modify('+1 week');
echo $datetime->format('Y-m-d');
このコードは、現在の日付に1週間を加算した結果を表示します。
4. 日付のフォーマットと変換
PHPでは、日付をさまざまな形式で表示したり、変換したりすることができます。
4.1 DateTime::format()
メソッド
DateTime
オブジェクトのformat()
メソッドを使用して、日付を任意の形式で表示できます。例えば、以下のように記述します。
php$datetime = new DateTime("2025-03-22");
echo $datetime->format('Y年m月d日');
このコードは、「2025年03月22日」という形式で日付を表示します。
4.2 DateTime::createFromFormat()
メソッド
createFromFormat()
メソッドを使用して、特定の形式の日付文字列をDateTime
オブジェクトに変換することもできます。
php$datetime = DateTime::createFromFormat('Y-m-d', '2025-03-22');
echo $datetime->format('Y年m月d日');
このコードでは、2025-03-22
という日付文字列をDateTime
オブジェクトに変換し、その後、任意の形式で表示しています。
5. 日付と時刻のフォーマットで役立つ関数
PHPでは、特定の日付や時刻の部分を抽出するために、いくつかの便利な関数も提供されています。
-
getdate()
関数は、現在の日付と時刻を配列形式で返します。 -
mktime()
関数は、指定した日付からUNIXタイムスタンプを作成します。 -
checkdate()
関数は、指定した日付が有効かどうかを確認します。
6. 結論
PHPでの時間と日付の取り扱いは非常に強力で、様々なユースケースに対応することができます。基本的な関数から高度なDateTime
クラスの利用まで、用途に応じて使い分けることで、アプリケーション内で正確な時間と日付を管理できます。また、タイムゾーンの管理や日付の計算機能を活用することで、世界中のユーザーに対応したアプリケーションを開発することができます。