PHPで開発をしていると、現在の日時を表示したい、ログに記録したい、特定の形式で出力したいといった場面がよくありますよね。
でも、毎回ネットで調べて書いていませんか?
- 「Y-m-d H:i:s」って何の意味?
date()
とDateTime
のどちらを使えばいいの?
今回は、PHPでの日時フォーマットの基本から応用まで、すぐに使えるサンプル付きでわかりやすく解説します。
PHPで日時を扱う基本:2つの方法

PHPでは、主に以下の2通りで日時をフォーマットします。
date()
関数:シンプルで軽量DateTime
クラス:柔軟で多機能
どちらも用途によって使い分けできます。
まずはそれぞれの特徴を見てみましょう。
date()関数の使い方とパターン一覧
date()
関数は、とってもシンプルに使えます。
echo date("Y/m/d H:i:s"); // 出力例:2025/05/22 14:30:00
主なフォーマット記号一覧
フォーマット | 意味 | 出力例 |
---|---|---|
Y | 年(4桁) | 2025 |
y | 年(2桁) | 25 |
m | 月(2桁) | 01~12 |
n | 月(0なし) | 1~12 |
d | 日(2桁) | 01~31 |
H | 時(24時間) | 00~23 |
h | 時(12時間) | 01~12 |
i | 分 | 00~59 |
s | 秒 | 00~59 |
D | 曜日(短縮) | Mon, Tue等 |
l (エル) | 曜日(フル) | Monday等 |
この表があれば、必要な形式がすぐに作れますね。
DateTimeクラスの使い方とメリット
DateTime
クラスは、より柔軟な日時操作ができます。
$dt = new DateTime();
echo $dt->format("Y-m-d H:i:s");
DateTimeのメリット
date()
より柔軟(過去や未来の日時も簡単に扱える)- タイムゾーンやタイムスタンプ操作がしやすい
例:1週間後の日時を表示
$dt = new DateTime();
$dt->modify("+1 week");
echo $dt->format("Y年m月d日"); // 例:2025年05月29日
こんな風に日時の計算も簡単にできるんです。便利ですよね!
タイムゾーンの設定方法

日本で開発していると、時間がずれてしまうことがあります。これはタイムゾーンの設定が原因です。
基本的な設定方法
日本時間(JST)にしたい場合は、以下を設定します:
date_default_timezone_set('Asia/Tokyo');
より明示的な設定方法
DateTimeZone
を使って明示的に指定することもできます:
$dt = new DateTime("now", new DateTimeZone("Asia/Tokyo"));
echo $dt->format("Y-m-d H:i:s");
タイムゾーンの設定は忘れがちですが、とても重要なポイントです。
実務で使えるフォーマット例
実際の開発でよく使う形式をまとめました。
用途 | フォーマット例 | 出力例 |
---|---|---|
ログ出力 | Y-m-d H:i:s | 2025-05-22 14:30:00 |
ファイル名 | Ymd_His | 20250522_143000 |
日本語表示 | Y年m月d日 H時i分 | 2025年05月22日 14時30分 |
日付のみ | Y/m/d | 2025/05/22 |
時刻のみ | H:i | 14:30 |
この表を参考にすれば、目的に合った形式がすぐに選べます。
よくあるエラーと注意点
実際に使っていると、こんなトラブルに遭遇することがあります。
date()の引数が空や不正
引数の形式ミスで意図しない出力になることがあります。
タイムゾーンが未設定
サーバーによってはUTCがデフォルトで、日本時間とズレる場合があります。
対策
date_default_timezone_set()
をスクリプトの先頭に書くのがベストです。こうすることで、時間のズレを防げます。
まとめ
PHPでの日時フォーマットは、date()の簡便さとDateTimeの柔軟性を理解して使い分けることがポイントです。
今日のまとめ
- 日時整形は
date()
またはDateTime
のどちらかで対応 format()
で多彩な表示が可能- タイムゾーンを正しく設定することで時間のズレを防止
- 実務では目的に合わせたフォーマット選びが大切
最初は覚えることが多く感じるかもしれませんが、基本的なパターンを覚えてしまえば、あとは応用するだけです。
まずは簡単なものから試してみて、少しずつ慣れていってくださいね。
コメント