【完全保存版】PHPでの日時フォーマットまとめ|date()とDateTimeの使い分け&実用例

PHP

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
i00~59
s00~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:s2025-05-22 14:30:00
ファイル名Ymd_His20250522_143000
日本語表示Y年m月d日 H時i分2025年05月22日 14時30分
日付のみY/m/d2025/05/22
時刻のみH:i14:30

この表を参考にすれば、目的に合った形式がすぐに選べます。


よくあるエラーと注意点

実際に使っていると、こんなトラブルに遭遇することがあります。

date()の引数が空や不正

引数の形式ミスで意図しない出力になることがあります。

タイムゾーンが未設定

サーバーによってはUTCがデフォルトで、日本時間とズレる場合があります。

対策

date_default_timezone_set()スクリプトの先頭に書くのがベストです。こうすることで、時間のズレを防げます。


まとめ

PHPでの日時フォーマットは、date()の簡便さとDateTimeの柔軟性を理解して使い分けることがポイントです。

今日のまとめ

  • 日時整形はdate()またはDateTimeのどちらかで対応
  • format()で多彩な表示が可能
  • タイムゾーンを正しく設定することで時間のズレを防止
  • 実務では目的に合わせたフォーマット選びが大切

最初は覚えることが多く感じるかもしれませんが、基本的なパターンを覚えてしまえば、あとは応用するだけです。

まずは簡単なものから試してみて、少しずつ慣れていってくださいね。

コメント

タイトルとURLをコピーしました