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週間後を求めるコードを書いてみよう」といった課題に挑戦すると良いでしょう。