|
date
(PHP 4, PHP 5, PHP 7) date — ローカルの日付/時刻を書式化する
説明
string date
( string $format
[, int $timestamp = time()
] )
パラメータ
-
format
-
出力される日付文字列の書式。以下のオプションを参照ください。
定義済みの定数
も用意されており、たとえば DATE_RSS はフォーマット文字列
'D, d M Y H:i:s' と同じ意味になります。
以下の文字が format
パラメータ文字列として認識されます
format 文字 |
説明 |
戻り値の例 |
日 |
--- |
--- |
d |
日。二桁の数字(先頭にゼロがつく場合も) |
01 から 31 |
D |
曜日。3文字のテキスト形式。 |
Mon から Sun |
j |
日。先頭にゼロをつけない。 |
1 から 31 |
l (小文字の '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 月曜日に始まる年単位の週番号 |
例: 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 から 59 |
s |
秒。先頭にゼロをつける。 |
00 から 59 |
u |
マイクロ秒 (PHP 5.2.2 で追加)。
date() の場合、これは常に
000000 となることに注意しましょう。というのも、
この関数が受け取るパラメータは integer 型だからです。
一方 DateTime をマイクロ秒つきで作成した場合は、
DateTime::format() はマイクロ秒にも対応しています。
|
例: 654321 |
v |
ミリ秒 (PHP 7.0.0 で追加)
Same note applies as for u.
|
例: 654 |
タイムゾーン |
--- |
--- |
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 から 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
を返します。
注意:
この関数が受け付けるのは integer
のタイムスタンプだけです。したがって、書式指定文字
u が有用となるのは
date_create() で作成したタイムスタンプを用いて
date_format() を使用した場合のみです。
-
timestamp
-
オプションのパラメータ timestamp は、
integer 型の Unix タイムスタンプです。
timestamp が指定されなかった場合のデフォルト値は、
現在の時刻です。言い換えると、デフォルトは
time() の返り値となります。
返り値
日付を表す文字列を返します。
timestamp に数字以外が使用された場合は
FALSE が返され、E_WARNING
レベルのエラーが発生します。
エラー / 例外
すべての日付/時刻関数は、
有効なタイムゾーンが設定されていない場合に E_NOTICE
を発生させます。また、システム設定のタイムゾーンあるいは環境変数
TZ を使用した場合には E_STRICT
あるいは E_WARNING を発生させます。
date_default_timezone_set() も参照ください。
例
例1 date() の例
<?php // 使用するデフォルトのタイムゾーンを指定します。PHP 5.1 以降で使用可能です。 date_default_timezone_set('UTC');
// 結果は、たとえば Monday のようになります。 echo date("l");
// 結果は、たとえば Monday 8th of August 2005 03:12:46 PM のようになります。 echo date('l jS \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));
/* 書式指定パラメータに、定数を使用します。 */ // 結果は、たとえば Wed, 25 Sep 2013 15:28:57 -0700 のようになります。 echo date(DATE_RFC2822);
// 結果は、たとえば 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 であり、 // またタイムゾーンは Mountain Standard Time (MST) であるものとします
$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'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01 $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 17:16:18 MST 2001 $today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month $today = date("H:i:s"); // 17:16:18 $today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (MySQL の DATETIME フォーマット) ?>
他の言語で日付をフォーマットするためには、date() のかわりに
setlocale() および strftime()
関数を使用する必要があります。
注意
注意:
日付の文字列表現からタイムスタンプを生成するには、
strtotime() が使用できるでしょう。
さらに、いくつかのデータベースは(MySQL の
» UNIX_TIMESTAMP 関数の
ような)日付フォーマットからタイムスタンプへの変換関数を有しています。
|
|
|