(PHP 4, PHP 5, PHP 7, PHP 8)
date —Unixタイムスタンプを書式化する
指定された引数timestamp (Unixタイムスタンプ) を、与えられた フォーマット文字列によりフォーマットし、日付文字列を返します。 タイムスタンプが与えられない場合は、現在の時刻が使われます。 つまりtimestamp はオプションであり そのデフォルト値はtime() の値です。
Unixタイムスタンプはタイムゾーンを処理しません。 タイムゾーン情報が付加された日付/時刻の情報を書式化するには、DateTimeImmutable クラスや、DateTimeInterface::format() を使って下さい。
formatDateTimeInterface::format() が受け入れるフォーマット。
注意:date() 関数は、マイクロ秒については常に
000000を生成します。 というのも、この関数が受け取るパラメータは int 型だからです。 一方DateTimeInterface 型のオブジェクトをマイクロ秒つきで作成した場合は、DateTimeInterface::format() はマイクロ秒にも対応しています。
timestampオプションのパラメータtimestamp は、int 型の Unix タイムスタンプです。timestamp が指定されなかったり、null だった場合のデフォルト値は、現在の時刻です。言い換えると、デフォルトはtime() の返り値となります。
フォーマットされた日付を表す文字列を返します。
すべての日付/時刻関数は、有効なタイムゾーンが設定されていない場合にE_WARNINGを発生させます。date_default_timezone_set() も参照ください。
| バージョン | 説明 |
|---|---|
| 8.0.0 | timestamp は、nullable になりました。 |
例1date() の例
<?php
// set the default timezone to use.
date_default_timezone_set('UTC');
// Prints something like: Monday
echodate("l") ."\n";
// Prints something like: Monday 8th of August 2005 03:12:46 PM
echodate('l jS \of F Y h:i:s A') ."\n";
// Prints: July 1, 2000 is on a Saturday
echo"July 1, 2000 is on a ".date("l",mktime(0,0,0,7,1,2000)) ."\n";
/* use the constants in the format parameter */
// prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echodate(DATE_RFC2822) ."\n";
// prints something like: 2000-07-01T00:00:00+00:00
echodate(DATE_ATOM,mktime(0,0,0,7,1,2000));前にバックスラッシュを付けてエスケープすることにより、 フォーマット文字列として認識される文字が展開されることを防止することができます。 バックスラッシュ付きの文字は既に特別なシーケンスであり、 バックスラッシュもエスケープすることが必要となる可能性があります。
例2date() の文字をエスケープする
<?php
// Wednesday the 15th のように出力
echodate('l \t\h\e jS');date() フォーマットのいくつかの例を示します。 現在の実装で特別な意味がある文字や今後の PHP のバージョンで意味が 割り付けられるであろう文字については、望ましくない結果を避けるために エスケープする必要があることに注意してください。エスケープを する際には、改行文字 \n のような文字を回避するために シングルクォートを使用してください。
例3date() のフォーマット指定
<?php
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone
date_default_timezone_set("America/Phoenix");
echodate("F j, Y, g:i a") ."\n";// March 10, 2001, 5:16 pm
echodate("m.d.y") ."\n";// 03.10.01
echodate("j, n, Y") ."\n";// 10, 3, 2001
echodate("Ymd") ."\n";// 20010310
echodate('h-i-s, j-m-y, it is w Day') ."\n";// 05-16-18, 10-03-01, 1631 1618 6 Satpm01
echodate('\i\t \i\s \t\h\e jS \d\a\y.') ."\n";// it is the 10th day.
echodate("D M j G:i:s T Y") ."\n";// Sat Mar 10 17:16:18 MST 2001
echodate('H:m:s \m \i\s\ \m\o\n\t\h') ."\n";// 17:03:18 m is month
echodate("H:i:s") ."\n";// 17:16:18
echodate("Y-m-d H:i:s") ."\n";// 2001-03-10 17:16:18 (the MySQL DATETIME format)他の言語で日付をフォーマットする用途には、date() のかわりにIntlDateFormatter::format() が使えます。
注意:
日付の文字列表現からタイムスタンプを生成するには、strtotime() が使用できるでしょう。 さらに、いくつかのデータベースは(MySQL の» UNIX_TIMESTAMP 関数の ような)日付フォーマットからタイムスタンプへの変換関数を有しています。
$_SERVER['REQUEST_TIME'] によって、リクエスト開始時のタイムスタンプが取得できます。
