PHP マニュアル
前のページ |  | 次のページ

# date

(PHP 3, PHP 4, PHP 5)

date -- ローカルの日付/時刻を書式化する

## 説明

string date ( string format [, int timestamp] )

指定された引数 `timestamp` を、与えられた フォーマット文字列によりフォーマットし、日付文字列を返します。 タイムスタンプが与えられない場合は、現在の時刻が使われます。 つまり `timestamp` はオプションであり そのデフォルト値は time() の値です。

## パラメータ

`format`

  出力される日付文字列の書式。以下のオプションを参照ください。

  表 1. 以下の文字が `format` パラメータ文字列として認識されます

  `format` 文字 | 説明 | 戻り値の例
  --- | --- | ---
  日 | --- | ---
  `d` | 日。二桁の数字（先頭にゼロがつく場合も） | `01` から `31`
  `D` | 曜日。3文字のテキスト形式。 | `Mon` から `Sun`
  `j` | 日。先頭にゼロをつけない。 | `1` から `31`
  `l` (lowercase 'L') | 曜日。フルスペル形式。 | `Sunday` から `Saturday`
  `N` | ISO-8601 形式の、曜日の数値表現 (PHP 5.1.0 で追加)。 | `1`（月曜日）から `7`（日曜日）
  `S` | 英語形式の序数を表すサフィックス。2 文字。 | `st`, `nd`, `rd` または `th`。 `j`と一緒に使用する ことができる。
  `w` | 曜日。数値。 | `0` (日曜)から `6` (土曜)
  `z` | 年間の通算日。数字。(ゼロから開始) | `0` から `365`
  週 | --- | ---
  `W` | ISO-8601 月曜日に始まる年単位の週番号 (PHP 4.1.0 で追加) | 例: `42` (年の第 42 週目)
  月 | --- | ---
  `F` | 月。フルスペルの文字。 | `January` から `December`
  `m` | 月。数字。先頭にゼロをつける。 | `01` から `12`
  `M` | 月。3 文字形式。 | `Jan` から `Dec`
  `n` | 月。数字。先頭にゼロをつけない。 | `1` から `12`
  `t` | 指定した月の日数。 | `28` から `31`
  年 | --- | ---
  `L` | 閏年であるかどうか。 | `1`なら閏年。`0`なら閏年ではない。
  `o` | ISO-8601 形式の年。これは `Y` ほぼ同じだが、ISO 週番号 （`W`）が前年あるいは翌年に属する場合がある点で 異なる（PHP 5.1.0 で追加）。 | 例: `1999` あるいは `2003`
  `Y` | 年。4 桁の数字。 | 例: `1999`または`2003`
  `y` | 年。2 桁の数字。 | 例: `99` または `03`
  時 | --- | ---
  `a` | 午前または午後（小文字） | `am` または `pm`
  `A` | 午前または午後（大文字） | `AM` または `PM`
  `B` | Swatch インターネット時間 | `000` から `999`
  `g` | 時。12時間単位。先頭にゼロを付けない。 | `1` から `12`
  `G` | 時。24時間単位。先頭にゼロを付けない。 | `0` から `23`
  `h` | 時。数字。12 時間単位。 | `01` から `12`
  `H` | 時。数字。24 時間単位。 | `00` から `23`
  `i` | 分。先頭にゼロをつける。 | `00` to `59`
  `s` | 秒。先頭にゼロをつける。 | `00` から `59`
  タイムゾーン | --- | ---
  `e` | タイムゾーン識別子（PHP 5.1.0 で追加） | 例: `UTC`, `GMT`, `Atlantic/Azores`
  `I` (capital i) | サマータイム中か否か | `1`ならサマータイム中。 `0`ならそうではない。
  `O` | グリニッジ標準時 (GMT) との時差 | 例: `+0200`
  `P` | グリニッジ標準時 (GMT) との時差。時間と分をコロンで区切った形式 (PHP 5.1.3 で追加)。 | 例: `+02:00`
  `T` | タイムゾーンの略称 | 例: `EST`, `MDT` ...
  `Z` | タイムゾーンのオフセット秒数。 UTC の西側のタイムゾーン用のオフセットは常に負です。そして、 UTC の東側のオフセットは常に正です。 | `-43200` から `50400`
  全ての日付/時刻 | --- | ---
  `c` | ISO 8601 日付 (PHP 5 で追加されました) | 2004-02-12T15:19:21+00:00
  `r` | RFC 2822 フォーマットされた日付 | 例: `Thu, 21 Dec 2000 16:01:07 +0200`
  `U` | Unix Epoch (1970 年 1 月 1 日 0 時 0 分 0 秒) からの秒数 | time() も参照

  フォーマット文字列中の認識されない文字は、そのまま表示されます。 `Z` 形式は、 gmdate() で使用した場合、常に `0` を返します。

`timestamp`

  オプションのパラメータ `timestamp` は、 integer 型の Unix タイムスタンプです。 `timestamp` が指定されなかった場合のデフォルト値は、 現在の時刻です。言い換えると、デフォルトは time() の返り値となります。

## 返り値

日付を表す文字列を返します。 `timestamp` に数字以外が使用された場合は `FALSE` が返され、`E_WARNING` レベルのエラーが発生します。

## エラー / 例外

すべての日付/時刻関数は、 有効なタイムゾーンが設定されていない場合に `E_NOTICE` を発生させます。また、システム設定のタイムゾーンあるいは環境変数 `TZ` を使用した場合には `E_STRICT` を発生させます。 date_default_timezone_set() も参照ください。

## 変更履歴

バージョン | 説明
--- | ---
5.1.0 | 有効なタイムスタンプの範囲は、通常 Fri, 13 Dec 1901 20:45:54 GMT から Tue, 19 Jan 2038 03:14:07 GMT までです (これらの日付は、32 ビット符号付き整数の最小および最大値に 対応します)。 しかし、PHP 5.1 より前のバージョンでは、システム環境によっては (例: Windows) この範囲が 1970 年 1 月 1 日から 2038 年 1 月 19 日 までに制限されます。
5.1.0 | タイムゾーンがおかしい場合に `E_STRICT` や `E_NOTICE` が発生するようになりました。
5.1.1 | PHP 5.1.1 以降、`format` パラメータで標準的な 日付/時刻フォーマットを指定する際に有用な 定数がいくつか追加されました。

## 例

例 1. date() の例

`<?php
// 使用するデフォルトのタイムゾーンを指定します。PHP 5.1 以降で使用可能です。
date_default_timezone_set('UTC');
// 結果は、たとえば Monday のようになります。
echo date("l");
// 結果は、たとえば Monday 15th of August 2005 03:12:46 PM のようになります。
echo date('l dS \of F Y h:i:s A');
// 結果は July 1, 2000 is on a Saturday となります。
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
/* 書式指定パラメータに、定数を使用します。 */
// 結果は、たとえば Mon, 15 Aug 2005 15:12:46 UTC のようになります。
echo date(DATE_RFC822);
// 結果は、たとえば 2000-07-01T00:00:00+00:00 のようになります。
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>`

前にバックスラッシュを付けてエスケープすることにより、 フォーマット文字列として認識される文字が展開されることを防止することができます。 バックスラッシュ付きの文字は既に特別なシーケンスであり、 バックスラッシュもエスケープすることが必要となる可能性があります。

例 2. date() の文字をエスケープする

`<?php // Wednesday the 15th のように出力 echo date("l \\t\h\e jS"); ?>`

date() と mktime() の両方を用いて、未来または過去の日付を知ることができます。

例 3. date() と mktime() の例

`<?php $tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y")); $lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y")); $nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1); ?>`

> 注意: サマータイムがあるため、日付や月の秒数を単純にタイムスタンプに 可減算するよりもより信頼性があります。

date() フォーマットのいくつかの例を示します。 現在の実装で特別な意味がある文字や今後の PHP のバージョンで意味が 割り付けられるであろう文字については、望ましくない結果を避けるために エスケープする必要があることに注意してください。エスケープを する際には、改行文字 \n のような文字を回避するために シングルクォートを使用してください。

例 4. date() のフォーマット指定

`<?php
// 今日は March 10th, 2001, 5:16:18 pm であるとします。
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day z '); // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // It is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:17 m is month
$today = date("H:i:s"); // 17:16:17
?>`

他の言語で日付をフォーマットするためには、date() のかわりに setlocale() および strftime() 関数を使用する必要があります。

## 注意

> 注意: 日付の文字列表現からタイムスタンプを生成するには、 strtotime() が使用できるでしょう。 さらに、いくつかのデータベースは（MySQL の UNIX_TIMESTAMP 関数の ような）日付フォーマットからタイムスタンプへの変換関数を有しています。

> ティップ: PHP 5.1 以降、`$_SERVER['REQUEST_TIME']` によってリクエスト開始時のタイムスタンプが取得できるようになりました。

## 参考

getlastmod()
gmdate()
mktime()
strftime()
time()

前のページ | ホーム | 次のページ
date_timezone_set | 上に戻る | getdate