SEARCH

CATEGORY

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

よく使うフォーマット

フォーマット出力例
Y2026
m06
d19
H15
i30
s45
Y-m-d2026-06-19
Y/m/d2026/06/19
Y-m-d H:i:s2026-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を活用するとよいでしょう。