PHP の日付と時間の取得(date, time, strtotime)を完全解説!初心者でもわかる使い方
新人
「PHPで現在の日付や時間を取得する方法を教えてください!」
先輩
「PHPでは、date()関数やtime()関数を使って簡単に日付と時間を取得できるよ。」
新人
「なるほど!具体的にどうやって使うんですか?」
先輩
「それじゃあ、基本から順番に解説していこう!」
1. PHP で日付と時間を扱う方法(基本的な説明)
PHP では、サーバーの現在時刻を取得し、任意のフォーマットで表示することができます。主に次の関数を使います。
date()- 指定したフォーマットで日付と時間を取得time()- 現在の UNIX タイムスタンプを取得strtotime()- 文字列形式の日付を UNIX タイムスタンプに変換
2. time 関数と date 関数の使い方
まずは、time()関数を使って現在の UNIX タイムスタンプを取得してみましょう。
<?php
echo time();
?>
出力結果(2025年3月2日の例):
1709385600
次に、date()関数を使って、現在の日付と時間を取得する方法を見てみましょう。
<?php
echo date("Y-m-d H:i:s");
?>
出力結果(2025年3月2日の例):
2025-03-02 14:30:15
このように、date()関数を使うと、指定したフォーマットで日付と時間を簡単に表示できます。
3. strtotime 関数を使った日付の変換
PHP では、文字列で表現された日付を UNIX タイムスタンプに変換するために strtotime() 関数を使用します。この関数を使うことで、日付の計算や比較を簡単に行うことができます。
例えば、「2025年3月2日」を UNIX タイムスタンプに変換するには、次のように記述します。
<?php
echo strtotime("2025-03-02");
?>
出力結果(例):
1709385600
また、「+1 day」や「next Monday」のような自然な表現も使用できます。
<?php
echo date("Y-m-d", strtotime("+1 week"));
?>
出力結果(2025年3月2日の場合):
2025-03-09
このように、strtotime() 関数を使えば、簡単に日付を計算することができます。
4. PHP でタイムゾーンを設定する方法
PHP で日付や時間を扱う際、デフォルトのタイムゾーンが意図しないものになっていると、正しい時間が取得できないことがあります。そのため、適切なタイムゾーンを設定することが重要です。
現在のタイムゾーンを確認するには、次のように記述します。
<?php
echo date_default_timezone_get();
?>
出力結果(例):
UTC
もし、タイムゾーンが「UTC」のままだと、日本時間 (Asia/Tokyo) では正しい時間が表示されません。タイムゾーンを「Asia/Tokyo」に変更するには、以下のコードを実行します。
<?php
date_default_timezone_set("Asia/Tokyo");
echo date("Y-m-d H:i:s");
?>
出力結果(例):
2025-03-02 23:30:15
この設定を php.ini に追加すると、すべてのスクリプトで適用されます。
date.timezone = "Asia/Tokyo"
タイムゾーンの設定を適切に行うことで、正しい時間を取得しやすくなります。
5. フォーマットを変更して日付を表示する方法
PHP の date() 関数を使えば、日付や時間を自由なフォーマットで表示することができます。
例えば、年月日を「2025年3月2日」という形式で表示するには、次のように記述します。
<?php
echo date("Y年m月d日");
?>
出力結果(例):
2025年03月02日
また、曜日を含めた形式で表示することも可能です。
<?php
echo date("Y年m月d日 l");
?>
出力結果(例):
2025年03月02日 Sunday
日本語で曜日を表示する場合は、setlocale() 関数を使ってロケールを設定し、strftime() を使う方法もあります。
<?php
setlocale(LC_TIME, "ja_JP.UTF-8");
echo strftime("%Y年%m月%d日 %A");
?>
出力結果(例):
2025年03月02日 日曜日
このように、フォーマットを柔軟に指定することで、用途に応じた日付の表示が可能になります。
6. 未来や過去の日付を取得する方法(+1 day, -1 month など)
PHP では、strtotime() 関数を使って未来や過去の日付を簡単に取得することができます。
例えば、「今日から1日後」の日付を取得するには、次のように記述します。
<?php
echo date("Y-m-d", strtotime("+1 day"));
?>
出力結果(2025年3月2日の場合):
2025-03-03
同様に、「1か月前」の日付を取得することも可能です。
<?php
echo date("Y-m-d", strtotime("-1 month"));
?>
出力結果(2025年3月2日の場合):
2025-02-02
さらに、「次の月曜日」や「来週の日曜日」など、自然な表現を使って日付を計算できます。
<?php
echo date("Y-m-d", strtotime("next Monday"));
?>
出力結果(2025年3月2日の場合):
2025-03-03
このように、strtotime() 関数を使うと、さまざまな日付の計算が簡単にできます。
7. PHP で日付の計算をする方法(差分を求める)
PHP では、2つの日付の差分を計算することができます。例えば、特定の日付から現在までの日数を求める場合は、strtotime() を使って差を計算できます。
次の例では、2つの日付の差分(日数)を求めます。
<?php
$date1 = strtotime("2025-03-02");
$date2 = strtotime("2025-02-20");
$diff = ($date1 - $date2) / (60 * 60 * 24);
echo $diff . "日";
?>
出力結果:
10日
また、DateTime クラスを使うと、より簡単に日付の差分を求めることができます。
<?php
$date1 = new DateTime("2025-03-02");
$date2 = new DateTime("2025-02-20");
$diff = $date1->diff($date2);
echo $diff->days . "日";
?>
出力結果:
10日
この方法では、より直感的に日付の差を求めることができるのでおすすめです。
8. PHP の日付操作を学ぶためのおすすめの方法
PHP の日付操作をマスターするには、以下の方法を試してみると良いでしょう。
① 実際にコードを書いて試す
PHP の date()、strtotime()、DateTime クラスなどを使って、自由に日付を操作するコードを書いてみましょう。例えば、1年後の日付を求めるコードを実行してみるのも良い練習になります。
<?php
echo date("Y-m-d", strtotime("+1 year"));
?>
② 公式ドキュメントを読む
PHP の公式ドキュメントには、日付に関する詳細な情報が載っています。最新の仕様や便利な機能を知るために、定期的にチェックするのがおすすめです。
公式サイト: PHP date() 関数のドキュメント
③ Web アプリに実装してみる
実際に Web アプリを作りながら日付操作を学ぶのも効果的です。例えば、カレンダー機能やスケジュール管理アプリを作ってみると、実践的に学ぶことができます。
④ 日付に関するクイズや問題を解く
日付に関する問題を解くことで、知識を定着させることができます。例えば、「指定された日付の1週間後を求めるコードを書いてみよう」といった課題に挑戦すると良いでしょう。
まとめ
PHPで日付と時間を扱う方法について、初心者にもわかりやすく基本から応用まで解説しました。date()関数で日付や時間を自由なフォーマットで取得し、time()関数で現在のUNIXタイムスタンプを得ることができました。また、strtotime()関数を使えば、「+1 day」や「next Monday」などの自然な表現で未来や過去の日付を計算でき、DateTimeクラスを使うことで日付の差分を簡単に求める方法も学びました。
タイムゾーンの設定や日本語表記の曜日表示も含めて、実務に活かせるさまざまな活用方法を紹介しました。これにより、PHPでのスケジュール管理やカレンダー機能、ログの記録や通知システムの構築など、あらゆるWebアプリケーションに応用できます。
最後に、実際のコードで確認することが何より重要です。以下は復習用のサンプルコードとして、現在の日付を日本語表記で表示する方法です。
<?php
date_default_timezone_set("Asia/Tokyo");
setlocale(LC_TIME, "ja_JP.UTF-8");
echo strftime("%Y年%m月%d日 %A");
?>
上記のように書くことで、「2025年03月02日 日曜日」といった日本語の表記が可能になります。PHPで日付と時間を自在に扱えるようになることで、システム開発の幅が大きく広がります。毎日の実装の中で繰り返し試して、自然に使えるようになりましょう。
新人
「PHPって、こんなに簡単に日付を操作できるんですね!」
先輩
「そうなんだ。特にdate()やstrtotime()を覚えるだけで、かなりのことができるよ。」
新人
「strtotime()で『next Monday』とか『-1 month』って書けるの、すごく便利ですね!」
先輩
「実際の開発でもよく使うから、慣れておくとすごく役立つよ。日付の差分をDateTimeクラスで計算する方法も覚えておくと安心だね。」
新人
「タイムゾーンの設定も重要なんですね。Asia/Tokyoにしておかないと時間がズレるかもって気づきませんでした。」
先輩
「その通り。環境によって結果が変わるから、タイムゾーンやロケールの設定は開発初期にしっかり確認しておこうね。」
新人
「これでWebアプリにカレンダー機能も自分で作れそうな気がします!」
先輩
「うん、自信を持ってどんどんコードを書いてみて。日付と時間の扱いに強くなると、実務でも活躍できるよ。」