date

(PHP 3, PHP 4, PHP 5)

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

説明

string date ( string format [, int timestamp] )

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

注意: 有効なタイムスタンプの範囲は通常 Fri, 13 Dec 1901 20:45:54 GMTからTue, 19 Jan 2038 03:14:07 GMTまでです。 (これらの日付は、32ビット符号付き整数の最小および最大値に対応し ます。) Windowsではこの範囲は1970年1月1日から2038年1月19日GMTに制限されます。

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

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

format character説明戻り値の例
a午前または午後(小文字)am または pm
A午前または午後(大文字)AM または PM
BSwatch インターネット時間000 から 999
d日。二桁の数字(先頭にゼロがつく場合も)01 から 31
D曜日。3文字のテキスト形式。Mon から Sun
F月。フルスペルの文字。January から December
g時。12時間単位。先頭にゼロを付けない。1 から 12
G時。24時間単位。先頭にゼロを付けない。0 から 23
h時。数字。12 時間単位。01 から 12
H時。数字。24 時間単位。00 から 23
i分。先頭にゼロをつける。00 to 59
I (大文字の i)サマータイム中か否か1ならサマータイム中。 0ならそうではない。
j日。先頭にゼロをつけない。1 から 31
l (小文字の 'L')曜日。フルスペル形式。Sunday から Saturday
L閏年であるかどうかを表す論理値。1なら閏年。0なら閏年ではない。
m月。数字。先頭にゼロをつける。01 から 12
M月。3文字形式。Jan から Dec
n月。数字。先頭にゼロをつけない。1 から 12
Oグリニッジ標準時(GMT)との時間差Example: +0200
rRFC 822 フォーマットされた日付例: Thu, 21 Dec 2000 16:01:07 +0200
s秒。先頭にゼロをつける。00 から 59
S英語形式の序数を表すサフィックス。2 文字。 st, nd, rd または thjと一緒に使用する ことができる。
t指定した月の日数。28 から 31
Tこのマシーンのタイムゾーンの設定。例: EST, MDT ...
UUnix 時(1970年1月1日0時0分0秒)からの秒数time()も参照
w曜日。数値。0 (日曜)から 6 (土曜)
WISO-8601 月曜日に始まる年単位の週番号 (PHP 4.1.0で追加)例: 42 (1年の第42週目)
Y年。4 桁の数字。例: 1999または2003
y年。2 桁の数字。例: 99 または 03
z年間の通算日。数字。0 から 366
Zタイムゾーンのオフセット秒数。 UTCの西側のタイムゾーン用のオフセットは常に負です。そして、 UTCの東側のオフセットは常に正です。-43200 から 43200

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

例 1. date() examples

<?php
// Prints something like: Wednesday
echo date("l");

// Prints something like: Wednesday 15th of January 2003 05:51:38 AM
echo date("l dS of F Y h:i:s A");

// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
?>

You can prevent a recognized character in the format string from being expanded by escaping it with a preceding backslash. If the character with a backslash is already a special sequence, you may need to also escape the backslash.

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

<?php
// Prints something like: Wednesday
echo date("l");

// Prints something like: Wednesday 15th of January 2003 05:51:38 AM
echo date ("l dS of F Y h:i:s A");

// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date ("l", mktime(0,0,0,7,1,2000));
?>

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

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

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

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

例 4. 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 のような文字を回避するためにシングルークオー トを使用してください。

例 5. 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
?>

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

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