PHPの日付・時間操作まとめ|date・strtotime・DateTimeの使い方
PHPには日付を扱うための便利な関数やクラスが用意されており、用途に応じて使い分けることで効率よく実装できます。
この記事では、PHPでよく利用される「date」「strtotime」「DateTime」の基本的な使い方と実践的なサンプルコードを紹介します。
date
現在日時を取得する
date() は日時を指定した形式の文字列として取得する関数です。
タイムスタンプを省略した場合は現在日時が使用されます。
サンプル
$today = date('Y-m-d H:i:s');
echo $today;
出力例
2026-06-19 10:30:15
指定フォーマットで表示する
フォーマット文字を変更することで、さまざまな形式で日時を表示できます。
サンプル
echo date('Y/m/d');
出力例
2026/06/19
よく使うフォーマット
| フォーマット | 出力例 |
|---|---|
| Y | 2026 |
| m | 06 |
| d | 19 |
| H | 15 |
| i | 30 |
| s | 45 |
| Y-m-d | 2026-06-19 |
| Y/m/d | 2026/06/19 |
| Y-m-d H:i:s | 2026-06-19 15:30:45 |
使用例(著作権表記の年を自動更新する)
Webサイトのフッターなどでは、現在の年を自動で表示したい場合があります。date() を利用すると、毎年手動で修正する必要がありません。
サンプル
echo '© ' . date('Y') . ' Sample Company';
出力例
© 2026 Sample Company
strtotime
日付文字列をタイムスタンプへ変換する
strtotime() は日付文字列をUnixタイムスタンプへ変換する関数です。
サンプル
$timestamp = strtotime('2026-06-19');
echo $timestamp;
日付の加算・減算を行う
「+1 day」「-1 week」などの文字列を指定して日時を操作できます。
昨日
$yesterday = strtotime('-1 day');
明日
$tomorrow = strtotime('+1 day');
1週間後
$next_week = strtotime('+1 week');
1か月後
$next_month = strtotime('+1 month');
使用例(申込期限を判定する)
$deadline = strtotime('2026-06-30');
$today = strtotime(date('Y-m-d'));
if ($today <= $deadline) {
echo '受付中';
} else {
echo '受付終了';
}
DateTime
日付をオブジェクトとして扱う
DateTime は PHP で日付や時刻をオブジェクトとして扱うためのクラスです。
加算・減算や比較だけでなく、タイムゾーンを考慮した日時処理も行えます。
複雑な日付計算や比較を行う場合は、date() や strtotime() よりも DateTime の利用が推奨されます。
日付の加算・減算を行う
1か月後を取得
$dt = new DateTime();
$dt->modify('+1 month');
echo $dt->format('Y-m-d');
1週間前を取得
$dt = new DateTime();
$dt->modify('-1 week');
echo $dt->format('Y-m-d');
日付を比較する
DateTimeオブジェクト同士は比較演算子で比較できます。
$today = new DateTime();
$deadline = new DateTime('2026-06-30');
if ($today <= $deadline) {
echo '受付中';
} else {
echo '受付終了';
}
使用例(イベント開催日までの日数を取得する)
$today = new DateTime();
$event = new DateTime('2026-07-18');
$diff = $today->diff($event);
echo $diff->days . '日';
出力例
29日
DateTimeImmutableという選択肢もある
より安全に日付を扱いたい場合は、DateTimeImmutable を利用する方法もあります。
DateTime は modify() を実行すると自身の値が変更されますが、DateTimeImmutable は元の値を変更せず、新しいオブジェクトを返します。
予期しない日時の変更を防ぎやすいため、新規開発では DateTimeImmutable が採用されることもあります。
まとめ
PHPの日付処理には用途に応じて複数の方法があります。
| 用途 | おすすめ |
|---|---|
| 現在日時を取得する | date() |
| 日付文字列をタイムスタンプへ変換する | strtotime() |
| 日付の加算・減算を行う | DateTime |
| 日付同士を比較する | DateTime |
| 複雑な日付処理を行う | DateTime |
特に新規開発では、保守性や可読性の観点からDateTimeクラスを利用するケースが増えています。
まずはdate()とstrtotime()の基本を理解し、複雑な日付処理ではDateTimeを活用するとよいでしょう。