まえがき
PHPで今日の日付を取得する方法はいくつか存在し、状況に応じて適切な手法を選択することが重要です。
本記事では、PHPの基本的な関数からフレームワークを活用する方法まで、10種類の方法を詳しく解説します。コード例とともに、それぞれの特徴や使いどころを紹介するので、ぜひ参考にしてください。
1.標準のdate()関数を使う
| 1
2
 | <?php
echo date('Y-m-d'); // 2025-02-11
 | 
2.DateTimeクラスを使う
| 1
2
3
 | <?php
$date = new DateTime();
echo $date->format('Y-m-d'); // 2025-02-11
 | 
3.Carbonライブラリを使う
| 1
2
3
 | <?php
use Carbon\Carbon;
echo Carbon::today()->format('Y-m-d'); // 2025-02-11
 | 
4.Unixタイムスタンプから取得する
| 1
2
 | <?php
echo date('Y-m-d', time()); // 2025-02-11
 | 
5.strftime()を使う(非推奨だが参考)
| 1
2
 | <?php
echo strftime('%Y-%m-%d'); // 2025-02-11
 | 
PHP 8.1以降、strftime() は 非推奨 となりました。
その理由は以下の通りです:
- strftime() は setlocale() の影響を受けるため、一部の環境で ロケール設定の違いによる動作の不一致 が生じる。 
- IntlDateFormatter などの より強力で国際化対応が容易な代替手段 が存在する。 
- PHPのモダンな設計に適合せず、新しいバージョンでのメンテナンスが難しくなった。 
今後の開発では 下記で紹介しているIntlDateFormatter か 冒頭のDateTime::format() を使用することを推奨します。
| 1
2
3
4
5
6
7
 | <?php
if (extension_loaded('intl')) {
    $formatter = new IntlDateFormatter('ja_JP', IntlDateFormatter::LONG, IntlDateFormatter::NONE);
    echo $formatter->format(new DateTime()); // 2025年2月11日
} else {
    echo 'Intl 拡張が無効のためIntlDateFormatter関数は使用できません。';
}
 | 
※IntlDateFormatter を使うには intl 拡張が必要となります
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 | <?php
if (extension_loaded('intl')) {
    $formatter = new IntlDateFormatter(
        'ja_JP@calendar=japanese',
        IntlDateFormatter::LONG,  // LONG だと「令和7年2月11日」、FULL だと「令和7年2月11日(土曜日)」
        IntlDateFormatter::NONE,
        null,
        IntlDateFormatter::TRADITIONAL  // TRADITIONAL だと「令和7年2月11日」、GREGORIAN だと「西暦2025年2月11日」
    );
    echo $formatter->format(new DateTime()); // 令和7年2月11日
} else {
    echo 'Intl 拡張が無効のためIntlDateFormatter関数は使用できません。';
}
 | 
※IntlDateFormatter を使うには intl 拡張が必要となります
8.日本語曜日表示付きの日付取得
| 1
2
3
 | <?php
$week = ['日', '月', '火', '水', '木', '金', '土'];
echo date('Y年m月d日(') . $week[date('w')] . '曜日)'; // 2025年2月11日(火)
 | 
9.gmdate()を使いGMT基準で取得する
| 1
2
 | <?php
echo gmdate('Y-m-d'); // GMT基準の日付を取得
 | 
10.WordPress内で今日の日付を取得する
| 1
2
 | <?php
echo current_time('Y-m-d'); // WordPressでの標準関数
 | 
WordPressでなぜ標準関数が用意されているかについては下記記事をお読みください。
WordPressで日付や時間を扱う際は専用関数を使おう
あとがき
3,6,7,10以外のサンプルコードはPHP Playground
で実行できます。
date関数の詳しい解説については下記記事をお読みください。
初心者向け PHP date関数の使い方ガイド