date

(PHP 3, PHP 4, PHP 5)

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

説明

string date ( string format [, int timestamp] )

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

ティップ: PHP 5.1.1 以降、format パラメータで標準的な 日付/時刻フォーマットを指定する際に有用な 定数がいくつか追加されました。 parameter.

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

注意: 有効なタイムスタンプの範囲は、通常 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 日 までに制限されます。

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

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

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

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

例 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() 関数を使用する必要があります。

getlastmod(), gmdate(), mktime(), strftime(), time() も参照ください。