PHPの date() この関数は、Webアプリケーションにおける日付と時刻の書式設定を扱う上で、最も強力かつ一般的に使用されるツールの一つです。ブログ、ECプラットフォーム、ダッシュボードのいずれを構築する場合でも、ユーザーにとって分かりやすい形で日付を表示することは不可欠です。この包括的なガイドでは、,
ここでは、その date() この関数について、その構文、書式指定子、実際の使用例、ベストプラクティス、およびよくある落とし穴を解説します。.
PHPのDate()関数とは何ですか?
の date() PHPのこの関数は、指定されたフォーマット文字列に従ってローカルの日付と時刻をフォーマットします。フォーマットされた日付/時刻を表す文字列を返します。.
基本構文
php
string date(string $format, ?int $timestamp = null)
$形式: フォーマット指定子を含む文字列(例:,Y,メートル,d).$タイムスタンプ: オプションのUnixタイムスタンプ。省略した場合は、現在の時刻が使用されます。.
注: PHP 8.0 以降では、2 番目のパラメータは null 許容型となっています(?int).
PHPの主な日付フォーマット指定子
以下は、最もよく使われる書式指定文字の簡易参照表です:
| 指定子 | 説明 | 出力例 |
Y | 4桁の年 | 2026 |
y | 2桁の年 | 25 |
メートル | 月(01~12) | 11 |
n | 先頭のゼロがない月(1~12) | 11 |
F | 月の正式名称 | 11月 |
M | 月の略称(3文字) | 11月 |
d | 先頭にゼロが付いた月内の日付 | 17 |
j | 先頭のゼロがない日 | 17 |
l | 平日の正式名称 | 月曜日 |
D | 平日の短い日(3文字) | 月 |
H | 24時間表記(00~23) | 11 |
h | 12時間形式(01~12) | 11 |
i | 先頭にゼロが付く分 | 37 |
s | 先頭にゼロが並ぶ秒 | 45 |
あ | 大文字のAM/PM | AM |
a | 小文字の「am」および「pm」 | 午前 |
T | タイムゾーンの略称 | IST |
c | ISO 8601 形式 | 2026-11-17T11:37:45+05:30 |
r | RFC 2822 形式 | 2026年11月17日(月) 11:37:45 +0530 |
PHPの日付形式の基本的な例
1. 現在の日付と時刻
php
echo date(‘Y-m-d H:i:s’);
// 出力:2026年11月17日 11:37:452. 人間が読みやすい形式
php
echo date(‘l, F j, Y \a\t g:i A’);
// 出力:2026年11月17日(月)午前11時37分用途 \ 次のようなエスケープ文字 で つまり、文字通り表示されるのです。.
3. 短い日付
php
echo date('d/m/Y');
// 出力:2026年11月17日4. 時刻のみ
php
echo date('h:i A');
// 出力:午前11時37分タイムスタンプの取り扱い
どのようなUnixタイムスタンプでも書式設定が可能です:
php
$timestamp = strtotime('2026-01-01 00:00:00');
echo date('Y-m-d', $timestamp);
// 出力:2026-01-01と組み合わせる strtotime()
php
echo date('F j, Y', strtotime('+7 days'));
// 出力:2026年11月24日タイムゾーンの取り扱い(重要!)
デフォルトでは, date() サーバーのデフォルトのタイムゾーンを使用します。必ず明示的に設定してください:
php
date_default_timezone_set('Asia/Kolkata'); // IST
echo date('Y-m-d H:i:s T');
// 出力:2026年11月17日 11:37:45 ISTベストプラクティス: 設定ファイルまたはエントリポイントの先頭でタイムゾーンを設定してください。.
PHPの日付フォーマットの実用例
1.ブログ記事の投稿日
php
$post_date = '2026-11-10 14:30:00';
echo date('M j, Y', strtotime($post_date));
// 出力:2026年11月10日2. 相対的な時間(「2時間前」)
php
function timeAgo($timestamp) {
$diff = time() - $timestamp;
if ($diff < 60) return "$diff秒前";
if ($diff < 3600) return round($diff/60) . "分前";
if ($diff < 86400) return round($diff/3600) . "時間前";
return date('M j', $timestamp);
}
echo timeAgo(strtotime('2026-11-17 09:00:00'));
// 出力:2時間前3. イベントのカウントダウン
php
$event = strtotime('2026-12-25 00:00:00');
$now = time();
$days_left = floor(($event - $now) / 86400);
echo "クリスマスまであと$days_left日です!";
// 出力:クリスマスまであと38日!よくある落とし穴とその回避策
| 問題点 | 解決 |
| タイムゾーンが間違っています | 必ず date_default_timezone_set() |
Y2K問題に似たバグで y | 好む Y 通年では |
| 先頭のゼロによる混乱 | 用途 j の代わりに d ゼロを避けたい場合は |
| ロケールの問題 | 用途 setlocale() + strftime() ローカライズされた名称については |
| 将来的には非推奨になるのでしょうか? | いいえ!でも、考えてみてください 日付と時刻 複雑な操作の場合 |
プロのヒント
1. 使用方法 日付と時刻 高度なニーズに対応
2. PHP
$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
3. echo $dt->format('Y-m-d H:i:s');
4. 日付の書式設定をキャッシュする
電話は控えてください date() パフォーマンス向上のためにループ内で。.
5. 入力タイムスタンプの検証
6. php
if ($timestamp === false) {
$timestamp = time();
7. }
8. 国際化
9. php
setlocale(LC_TIME, 'hi_IN');
10. echo strftime('%e %B %Y'); // ヒンディー語の日付
おまけ:1行で表す日付の表記法
php// ISOdate('c');
// 米国式表記date('m/d/Y h:i A');
// EU形式date('d.m.Y H:i');
結論
マスタリング date() その本質を理解することについてであり、 書式指定子, タイムゾーンの処理、 そして との連携 strtotime(). .一方 日付と時刻 複雑なシナリオにおいて、より高い処理能力を提供し、, date() 軽量で高速なまま、90%のユースケースに最適です。. カーマテックをリードしている。 PHP開発会社, を活用して、クリーンで効率的かつ信頼性の高い時間ベースの機能を実現します。.