カテゴリ: PHP 更新日: 2026/08/20

PHP の DateTime クラスの基本的な使い方を完全ガイド!初心者向け解説

PHP の DateTime クラスの基本的な使い方
PHP の DateTime クラスの基本的な使い方

新人と先輩の会話形式で理解しよう

新人

「PHPで日付や時間を扱いたいのですが、どんな方法がありますか?」

先輩

「PHPでは DateTime クラスを使うことで、簡単に日付や時間を操作できます。」

新人

DateTime クラスって何ですか?」

先輩

「それでは、基本から説明していきますね!」

1. DateTime クラスとは?

1. DateTime クラスとは?
1. DateTime クラスとは?

PHPの DateTime クラスは、日付や時刻(時間)を専門に扱うために用意された「道具箱」のような組み込みクラスです。プログラミング未経験の方にとって、日付の計算や表示形式の変更は難しく感じがちですが、このクラスを使えば驚くほど直感的に操作できます。

従来の date() 関数と比べて、「過去や未来の計算がしやすい」「複数のタイムゾーンを混乱なく扱える」といった強力なメリットがあり、現代のWeb開発では必須の知識となっています。

まずは、一番基本となる「現在の日時」を取得して画面に表示するコードを見てみましょう。たった2行で実現できます。


<?php
// 1. DateTimeのインスタンス(実体)を作る
$now = new DateTime();

// 2. formatメソッドで好きな形式(年-月-日 時:分:秒)で出力する
echo $now->format('Y-m-d H:i:s');
?>

このコードの中にある new DateTime() という記述は、「今この瞬間の時計を生成してください」とPHPにお願いしているイメージです。その後の format() を使うことで、中身のデータを「2026-03-30」のように、私たちが読みやすい形に整えて表示してくれます。

ポイント:
初心者の方は、まず「日付を扱いたいときは new DateTime() と書く」というルールさえ覚えておけば、スムーズに学習を進められますよ!

2. DateTime クラスを使うメリット

2. DateTime クラスを使うメリット
2. DateTime クラスを使うメリット

PHPで日付を扱う際、昔からある date() 関数などを使う方法もありますが、現在では DateTime クラス を使うのが一般的です。その理由は、初心者の方でも「直感的に」コードが書けるという大きなメリットがあるからです。

例えば、「明日の日付を知りたい」「1ヶ月後の予定を計算したい」といった場面。DateTime クラスなら、難しい計算式を自作しなくても、まるで英語で指示を出すように簡単に操作できます。

具体的なメリットは以下の3点に集約されます。

  • 計算がとにかく楽: 「+1 day(1日後)」や「-2 weeks(2週間前)」といった言葉で日時を動かせます。
  • 読みやすいコード: 何をやっている処理なのかが、パッと見てすぐに分かります。
  • ミスが減る: うるう年や月末の日数(30日か31日か)なども、PHPが自動で正しく計算してくれます。

プログラミングが初めての方でも安心な、1日後の日時を取得するシンプルなサンプルコードを見てみましょう。


<?php
// 現在の日時(時計)を用意する
$tomorrow = new DateTime();

// 「1日後 (+1 day)」に変更してね!と指示を出す
$tomorrow->modify('+1 day');

// 読みやすい形式で画面に表示する
echo $tomorrow->format('Y-m-d H:i:s');
?>

このように、modify() というメソッドを使うだけで、複雑な計算を一切せずに日付を操作できるのが DateTime クラスを使う最大の強みです。この「道具」の使い方をマスターするだけで、予約システムやカレンダー機能といった高度なプログラムへの第一歩を踏み出せますよ。

3. DateTime クラスの基本的な使い方(現在の日時を取得する、特定の日付を設定する)

3. DateTime クラスの基本的な使い方(現在の日時を取得する、特定の日付を設定する)
3. DateTime クラスの基本的な使い方(現在の日時を取得する、特定の日付を設定する)

PHPで日付や時刻を扱うための最もスタンダードな方法が、この DateTime クラスです。プログラミング未経験の方でも、「今、何時?」を調べる操作と「あの日、何曜日?」と指定する操作の2つさえ覚えれば、予約システムや日記アプリのような本格的な機能の基礎が作れるようになります。

① 現在の日時を取得する(「今」を捕まえる)

まずは、プログラムを実行した瞬間の「年・月・日・時・分・秒」をすべて取得する方法です。難しい設定は一切不要で、インスタンス(クラスの実体)を作るだけで完了します。


<?php
// 「今の時間」を専門に扱う変数 $now を用意します
$now = new DateTime();

// 取得した日時を、読みやすい形式で画面に表示します
// Y=年, m=月, d=日, H=時, i=分, s=秒 を表しています
echo $now->format("Y年m月d日 H時i分s秒");
?>

出力結果の例:


2026年03月30日 05:17:15

このように、new DateTime() と書くだけで、PHPが内部で持っている最新の時計データを取り出すことができます。format() メソッド内の文字(Yやmなど)を書き換えるだけで、日本風の表示も海外風の表示も自由自在です。

② 特定の日時を設定する(「未来や過去」を指定する)

次に、現在ではなく「自分の誕生日」や「イベントの開催日」など、特定の日付を指定する方法を学びましょう。やり方はとても簡単で、new DateTime() のカッコの中に、指定したい日付を書き込むだけです。


<?php
// カッコの中に「"西暦-月-日"」の形式で日付を入れます
$targetDate = new DateTime("2026-12-31");

// 設定した日付を、ハイフン区切りで表示してみましょう
echo "ターゲットの日付:" . $targetDate->format("Y-m-d");
?>

出力結果:


ターゲットの日付:2026-12-31

実は、このカッコの中には日付だけでなく "2026-12-31 23:59:59" のように時間まで細かく指定することも可能です。また、日付の形式も "2026/12/31" のようなスラッシュ区切りでも正しく認識してくれる賢い機能を持っています。

初心者向けアドバイス:
「今は new DateTime()」、「指定したい時は new DateTime("日付")」と使い分けるだけで、日付操作の9割はカバーできますよ!まずはこの基本の形を手に馴染ませていきましょう。

4. フォーマットを変更する方法

4. フォーマットを変更する方法
4. フォーマットを変更する方法

日付や時刻を扱う際、システム内部では「2026-03-30 05:19:13」のようなデータとして保持されていますが、実際にWebサイトに表示するときは「2026年3月30日」や「03/30」など、用途に合わせて見た目を変えたいですよね。

DateTime クラスでこの「見た目の変換」を担うのが format() メソッドです。このメソッドのカッコの中に、特定の英単語(フォーマット文字)を組み合わせたルールを書き込むことで、自由自在に表示形式をカスタマイズできます。

日本でおなじみの形式やスラッシュ区切りを表示する

プログラミング未経験の方でも覚えやすい、よく使われる表示形式のサンプルを見てみましょう。


<?php
// 特定の日付(2025年12月25日)を用意します
$date = new DateTime("2025-12-25");

// 1. スラッシュ区切り(月/日/年)で表示
echo $date->format("m/d/Y") . "<br>";

// 2. 日本語の「年月日」形式で表示
echo $date->format("Y年m月d日");
?>

出力結果:


12/25/2025
2025年12月25日

このように、Y は4桁の年、m は2桁の月、d は2桁の日というように役割が決まっています。これらを組み合わせて、間に「年」や「/」を入れるだけで、PHPが自動的に数字を当てはめてくれます。

時間まで含めて表示する方法

ニュース記事の投稿日時や予約システムなど、分・秒まで細かく表示したい場合も format() メソッドが活躍します。


<?php
// 日付と時間を指定してインスタンスを作成
$dateTime = new DateTime("2025-12-25 14:30:05");

// 「年-月-日 時:分」の形式で表示(秒は隠す)
echo $dateTime->format("Y-m-d H:i");
?>

出力結果:


2025-12-25 14:30

ここで使った H は24時間制の「時」、i は「分」を表します。「分」が m (month) ではなく i (minute) なのは、月と区別するためです。こうしたルールを少しずつ覚えるだけで、ユーザーにとって最も分かりやすい形で情報を届けられるようになりますよ。

豆知識:
大文字の Y は「2026」、小文字の y は「26」と表示されます。少し変えるだけで見た目がガラッと変わるのも、DateTime クラスの面白いところです。

5. 日時の計算(加算・減算)

5. 日時の計算(加算・減算)
5. 日時の計算(加算・減算)

DateTime クラスでは、日時を加算・減算することも非常に簡単です。modify() メソッドを使用することで、指定した日数や時間を加算・減算できます。

例えば、現在の日時から1週間後の日付を求めるには、次のように記述します。


<?php
$date = new DateTime();
$date->modify("+1 week");
echo $date->format("Y-m-d H:i:s");
?>

出力結果(2025年3月2日から1週間後の場合):


2025-03-09 14:30:15

逆に、1週間前の日付を求める場合は、次のように書きます。


<?php
$date = new DateTime();
$date->modify("-1 week");
echo $date->format("Y-m-d H:i:s");
?>

出力結果(2025年3月2日から1週間前の場合):


2025-02-23 14:30:15

このように、modify() メソッドを使うと、簡単に日付や時間を加算・減算することができます。特定の日付や時間を変更したい場合にとても便利です。

6. タイムゾーンの設定方法

6. タイムゾーンの設定方法
6. タイムゾーンの設定方法

PHP の DateTime クラスでは、タイムゾーンを設定することができます。タイムゾーンは、異なる地域の時間を管理するために非常に重要です。DateTime クラスでタイムゾーンを設定する方法を見てみましょう。

まず、タイムゾーンを設定しないと、デフォルトのタイムゾーンが使用されます。デフォルトでは「UTC」が設定されています。特定のタイムゾーンを設定するには、setTimezone() メソッドを使用します。

次のコードでは、東京(Asia/Tokyo)のタイムゾーンを設定し、現在の日時を表示します。


<?php
$date = new DateTime();
$timezone = new DateTimeZone("Asia/Tokyo");
$date->setTimezone($timezone);
echo $date->format("Y-m-d H:i:s");
?>

出力結果(2025年3月2日、東京の場合):


2025-03-02 14:30:15

このように、タイムゾーンを変更することで、異なる地域の時間を正確に管理することができます。

7. DateTime クラスを使う際の注意点(タイムゾーンの違いによる問題など)

7. DateTime クラスを使う際の注意点(タイムゾーンの違いによる問題など)
7. DateTime クラスを使う際の注意点(タイムゾーンの違いによる問題など)

タイムゾーンを設定しない場合、デフォルトのタイムゾーン(通常はUTC)が使用されます。この場合、ユーザーが別のタイムゾーンにいると、時間がずれて表示されることがあります。

たとえば、アメリカ東部時間(EST)を使用しているユーザーが、日本時間(JST)の日時を表示したい場合、タイムゾーンを適切に設定していないと、時間がずれる可能性があります。

そのため、タイムゾーンを明示的に設定することが重要です。特に、国際的なWebアプリケーションやサービスを開発する際は、タイムゾーンを意識して処理を行う必要があります。

次のコードでは、UTCタイムゾーンの日時と東京タイムゾーンの日時を比較してみましょう。


<?php
$timezone_utc = new DateTimeZone("UTC");
$timezone_tokyo = new DateTimeZone("Asia/Tokyo");

$utc_time = new DateTime("now", $timezone_utc);
$tokyo_time = new DateTime("now", $timezone_tokyo);

echo "UTC Time: " . $utc_time->format("Y-m-d H:i:s") . "<br>";
echo "Tokyo Time: " . $tokyo_time->format("Y-m-d H:i:s");
?>

出力結果:


UTC Time: 2025-03-02 06:30:15
Tokyo Time: 2025-03-02 15:30:15

このように、タイムゾーンによって時間がずれるため、使用するタイムゾーンを正しく設定することが大切です。

8. 実際の開発で役立つ応用例

8. 実際の開発で役立つ応用例
8. 実際の開発で役立つ応用例

DateTime クラスは、単に日付と時間を取得するだけでなく、実際の開発でも非常に役立つ機能を提供します。ここでは、実際の開発シーンでよく使われる応用例をいくつか紹介します。

① カウントダウンタイマーの作成

次の例では、カウントダウンタイマーを作成します。現在時刻と目標時刻(例えば、2025年12月31日23:59)を比較し、残り時間を表示します。


<?php
$now = new DateTime();
$target = new DateTime("2025-12-31 23:59");

$interval = $now->diff($target);

echo "残り時間: " . $interval->format('%R%a 日 %H 時間 %I 分 %S 秒');
?>

出力結果(2025年3月2日 14:30時点の場合):


残り時間: +305 日 09 時間 29 分 45 秒

② ユーザーの誕生日から年齢を計算する

ユーザーの誕生日を基に、現在の年齢を計算する場合も DateTime クラスが便利です。


<?php
$birthdate = new DateTime("1990-05-15");
$now = new DateTime();

$age = $now->diff($birthdate);
echo "年齢: " . $age->y . "歳";
?>

出力結果(現在が2025年3月2日の場合):


年齢: 34歳

③ 期限付きのタスクを表示する

期限が設定されたタスクを管理する際、期限までの日数を表示することができます。例えば、タスクの締切日が2025年4月1日で、現在の日付を使って締切までの日数を表示するコードを次のように書きます。


<?php
$due_date = new DateTime("2025-04-01");
$now = new DateTime();

$interval = $now->diff($due_date);
echo "締切まで: " . $interval->days . "日";
?>

出力結果(現在が2025年3月2日の場合):


締切まで: 30日

このように、DateTime クラスを活用することで、さまざまな日付操作や計算が簡単に行えます。日付や時間を管理する際には、DateTime クラスが非常に有用です。

まとめ

まとめ
まとめ

PHPで日付や時間を扱うには、従来のdate()関数だけでは複雑な操作が難しい場面もありましたが、DateTimeクラスを使うことで、格段に柔軟で読みやすいコードが書けるようになります。この記事では、DateTimeクラスの基本から応用まで、実際の開発現場で役立つ使い方を具体的なサンプルを通じて紹介しました。

まず、現在の日時を取得したり、任意の日付を指定してオブジェクト化する処理が非常にシンプルに書ける点が特徴です。そして、format()メソッドを使えば、様々な表示形式に自由に整形できるので、見やすさや要件に合わせた出力が可能です。

さらに、modify()メソッドを用いることで日付の加算・減算が直感的に書けるようになり、ユーザーの誕生日から年齢を計算したり、イベントのカウントダウンを行うような処理も簡単に実現できます。

実務で重要な「タイムゾーン」の取り扱いも、DateTimeZonesetTimezone()を併用することで、世界中のユーザーに対応した日時管理が可能となります。特に国際化対応や予約システムを扱うようなアプリケーションでは、正確な時間の把握が必要不可欠です。

応用編では、タスクの締切表示やカウントダウン機能など、実際のアプリケーションで利用頻度の高い処理も確認しました。ユーザーの入力した誕生日から年齢を求める処理なども、DateTimeクラスを使えば数行で済むほど簡単に書けることがわかりました。

このように、PHPのDateTimeクラスは、開発の現場でとても強力なツールです。今後、日付や時間を扱う場面に出会ったら、この記事で紹介したテクニックを思い出しながら、正確で見やすく、保守しやすいコードを書くことができるでしょう。

これからPHPを学ぶ皆さんにとって、日付操作をしっかり理解することは、スケジュール管理、通知処理、ログの記録など多くのシーンで必要となる重要なスキルです。ぜひ、DateTimeクラスの基本を土台にして、応用的な処理にもどんどんチャレンジしてみてください。

先生と生徒の振り返り会話

新人

「DateTimeクラスって最初は難しそうって思ってたけど、意外と書いてみると分かりやすいですね!」

先輩

「そうだね。特にformatやmodifyのようなメソッドは直感的で、コードの意味が読みやすいから覚えやすいよ。」

新人

「日付の加算とか減算が1行でできるのがびっくりでした!今まで面倒だと思ってた処理がすごく簡単に書けますね。」

先輩

「開発現場では納期の計算とか、締切のチェックなんかに頻繁に使われるから、DateTimeクラスはぜひマスターしておきたいスキルだね。」

新人

「あと、タイムゾーンの違いってあまり気にしてなかったけど、東京とUTCで時間がズレるのを見て実感しました。」

先輩

「その気付きは大事だよ。世界中の人にサービスを使ってもらうには、時間の取り扱いは丁寧にしないとね。」

新人

「今日の記事のおかげで、誕生日から年齢を出す処理とか、残り日数のカウントダウンも作れる自信が出てきました!」

先輩

「その調子!DateTimeクラスを味方にすれば、時間に関する機能は自由自在に作れるようになるよ。ぜひいろいろ試してみて!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPのDateTimeクラスとは何ですか?初心者でも使えますか?

PHPのDateTimeクラスは、日付や時間を簡単に扱うことができる便利なクラスで、初心者でも直感的に使いやすい構文が特徴です。

PHPで現在の日付や時間を取得するにはどうすればいいですか?

DateTimeクラスを使うことで、PHPで現在の日時を簡単に取得できます。フォーマットを指定すれば好みの形式で出力も可能です。

PHPで過去や未来の日付を取得するにはどうすればよいですか?

DateTimeクラスのmodifyメソッドを使えば、「+1 day」や「-1 week」のような表現で日付の加算・減算ができます。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

PHP の日時操作の記事一覧へ
新着記事
New1
Claude
ClaudeにPHPデバッグを相談するコツ!原因候補を仮説に分けて確認する質問例
New2
Python
PythonのCLIで対話型メニューを作る方法(prompt_toolkit)
New3
ChatGPT
ChatGPTでPHPコードを理解する方法!読めない処理をわかりやすく質問しよう
New4
PHP
PHP の定数(define, const)を使った設定方法を徹底解説!
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.2
Java&Spring記事人気No2
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.3
Java&Spring記事人気No3
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.4
Java&Spring記事人気No4
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.5
Java&Spring記事人気No5
Python
PythonでSQLiteを使う方法を完全ガイド!初心者でもわかるデータベース基本操作
No.6
Java&Spring記事人気No6
Claude
ClaudeにPHPリファクタリングを相談するコツ!目的・前提・制約を仕様メモにまとめるコツ
No.7
Java&Spring記事人気No7
Python
Pythonのシェルスクリプトを自動実行する方法(cron & Task Scheduler)
No.8
Java&Spring記事人気No8
PHP
PHPのMVCパターンを完全解説!初心者でもわかるModel・View・Controller