• Xでシェア
  • LINEでシェア
  • このエントリーをはてなブックマークに追加

PHP DateTimeクラスの使い方

この記事のポイント

DateTimeクラスについて学ぶ上で重要なポイントを以下にまとめました。これらの要素を理解することで、効率的に日時処理を行えるようになります。

  • 日時の作成と基本的な操作方法の習得
  • さまざまな形式での日時フォーマット変換の実現
  • 日付計算や比較処理による動的なプログラム作成

これらのポイントを押さえることで、Webアプリケーションやシステム開発において必要不可欠な日時処理を自在に操ることができるでしょう。

目次

DateTimeクラスとは?

DateTimeは、日時を扱うための標準クラスです。従来のdate関数よりも柔軟で強力な機能を提供し、オブジェクト指向的な方法で日時操作を行えます。

現在の日時取得から、特定の日付の作成、フォーマット変換、時差計算まで幅広い処理に対応しています。タイムゾーンの管理も簡単で、国際的なWebアプリケーション開発には欠かせないツールといえるでしょう。DateTimeクラスを使うことで、より読みやすく保守性の高いコードが書けるようになります。

【関連】
PHPをもっと詳しく学ぶならpaizaラーニング

基本構文

DateTimeクラスの基本的な使い方を理解するために、まずは最も基本的なオブジェクトの作成方法から見ていきましょう。new DateTime()でインスタンスを作成し、format()メソッドで任意の形式に変換できます。以下のコード例では、現在の日時取得と特定の日付作成の両方を示しています。

<?php // 現在の日時を取得 $now = new DateTime(); echo $now->format('Y-m-d H:i:s'); ?>

出力結果(例)

2025-08-14 14:30:25

※このページ内のコードの出力結果の一部で、実行した時刻により変動するものがあります。また、時刻はUTC形式で計算されるため、日本時間での計算結果と異なる場合があります

<?php // 特定の日付を作成 $date = new DateTime('2025-12-25 10:00:00'); echo $date->format('Y年m月d日 H時i分'); ?>

出力結果

2025年12月25日 10時00分

実用例

ここからは、DateTimeクラスを実際のプログラムで活用するための具体的なコード例を紹介します。日常的な開発で遭遇する場面を想定し、日時の加算減算、比較処理、タイムゾーン変換など、実践的な使い方を8つのパターンに分けて解説していきます。

各例では動物を使った親しみやすい出力結果を表示し、コードの動作を分かりやすく確認できるようにしています。これらの例を参考にすることで、さまざまな開発シーンでDateTimeクラスを効果的に活用できるでしょう。

日付に日数を加算

指定した日付から一定の日数を加算したい場合によく使われる例です。add()メソッドとDateIntervalクラスを組み合わせて使用します。

<?php $date = new DateTime('2025-01-01'); $date->add(new DateInterval('P30D')); echo 'ネコの誕生日: ' . $date->format('Y-m-d'); ?>

出力結果

ネコの誕生日: 2025-01-31

現在時刻から時間を減算

現在の時刻から指定した時間を減算する場合の例です。sub()メソッドを使用して時間の減算を行います。

<?php $now = new DateTime(); $now->sub(new DateInterval('PT3H')); echo 'イヌの散歩時刻: ' . $now->format('H:i'); ?>

出力結果(例)

イヌの散歩時刻: 00:30

二つの日付の差を計算

二つの日付の間隔を計算したい場合に使用するdiff()メソッドの例です。結果はDateIntervalオブジェクトで返されます。

<?php $start = new DateTime('2025-01-01'); $end = new DateTime('2025-03-15'); $diff = $start->diff($end); echo 'ウサギの成長期間: ' . $diff->days . '日間'; ?>

出力結果

ウサギの成長期間: 73日間

日付の比較処理

二つの日付を比較して、どちらが新しいかを判定する例です。比較演算子を直接使用できます。

<?php $date1 = new DateTime('2025-06-15'); $date2 = new DateTime('2025-08-20'); if ($date1 < $date2) { echo 'トラの誕生日の方が早い'; } ?>

出力結果

トラの誕生日の方が早い

タイムゾーンを指定した日時作成処理

異なるタイムゾーンを指定して日時を作成する例です。DateTimeZoneクラスと組み合わせて使用します。

<?php $tokyo = new DateTime('now', new DateTimeZone('Asia/Tokyo')); echo 'ゾウの活動時刻(東京): ' . $tokyo->format('H:i'); ?>

出力結果(例)

ゾウの活動時刻(東京): 12:30

文字列からの日付解析処理

さまざまな形式の文字列から日付を作成する例です。createFromFormat()メソッドを使用します。

<?php $date = DateTime::createFromFormat('d/m/Y', '25/12/2025'); echo 'キリンの記念日: ' . $date->format('Y年m月d日'); ?>

出力結果

キリンの記念日: 2025年12月25日

月末日の取得処理

指定した月の最終日を取得する例です。modify()メソッドを使用して柔軟な日付操作を行います。

<?php $date = new DateTime('2025-02-01'); $date->modify('last day of this month'); echo 'クマの冬眠終了: ' . $date->format('m月d日'); ?>

出力結果

クマの冬眠終了: 02月28日

曜日の判定処理

指定した日付の曜日を判定する例です。format()メソッドのwオプションを使用して数値で取得できます。

<?php $date = new DateTime('2025-01-01'); $weekday = $date->format('w'); echo 'ペンギンの活動日: ' . ($weekday == 0 ? '日曜日' : '平日'); ?>

出力結果

ペンギンの活動日: 平日

まとめ

DateTimeクラスは、日時処理を効率的かつ直感的に行うための強力なツールです。従来のdate関数と比較して、オブジェクト指向的なアプローチにより、より読みやすく保守性の高いコードを書くことができます。タイムゾーン処理から複雑な日付計算まで、幅広い用途に対応できる柔軟性も大きな魅力といえるでしょう。

DateTimeクラスの活躍する場面

  • 予約システムでの日時管理と空き状況確認
  • ログファイルの時刻記録とデータ分析処理
  • 国際的なWebサービスでのタイムゾーン対応

重要なポイント

  • オブジェクト作成時の適切な初期化方法の理解
  • フォーマット指定による柔軟な出力形式の実現
  • エラーハンドリングを含む安全な日時処理の実装

これらの知識を活用することで、日時に関するさまざまな要件に対応できる堅牢なアプリケーションを開発できるようになります。継続的な学習により、より高度な日時処理テクニックも習得していきましょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. PHPのリファレンス記事一覧
  4. PHP DateTimeクラスの使い方