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

# 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
B | Swatch Internet time | 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
r | RFC 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 ...
U | Unix 時(1970年1月1日0時0分0秒)からの秒数 | See also time()
w | 曜日。数値。 | 0 (日曜)から 6 (土曜)
W | ISO-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()も参照下さい。

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