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 or pm
A午前または午後(大文字)AM or PM
BSwatch Internet time000 から 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 フォーマットされた日付Example: Thu, 21 Dec 2000 16:01:07 +0200
s秒。先頭にゼロをつける。00 から 59
S英語形式の序数を表すサフィックス。2 文字。 st, nd, rd or th. Works well with j
t指定した月の日数。28 から 31
Tこのマシーンのタイムゾーンの設定。Examples: EST, MDT ...
UUnix 時(1970年1月1日0時0分0秒)からの秒数See also time()
w曜日。数値。0 (日曜)から 6 (土曜)
WISO-8601 月曜日に始まる年単位の週番号 (PHP 4.1.0で追加)Example: 42 (the 42nd week in the year)
Y年。4 桁の数字。Examples: 1999 or 2003
y年。2 桁の数字。Examples: 99 or 03
z年間の通算日。数字。0 から 366
Zタイムゾーンのオフセット秒数。 UTCの西側のタイムゾーン用のオフセットは常に負です。そして、 UTCの東側のオフセットは常に正です。-43200 から 43200

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

例 1. 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));
?>

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

例 2. Escaping characters in 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() Formatting

<?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()も参照下さい。