|
date (PHP 3, PHP 4, PHP 5) date -- 格式化一個本地時間/日期 說明string date ( string format [, int timestamp] )
返回將整數 timestamp
按照給定的格式字串而產生的字串。若果沒有給出時間戳則使用本地現用的時間。換句話說,timestamp
是可選的,預設值為 time()。
提示:
自 PHP 5.1.0 起有幾個有用的常量可用作標準的日期/時間格式來指定
format 參數。
注:
有效的時間戳典型範圍是格林威治時間 1901 年 12 月 13 日 20:45:54
到 2038 年 1 月 19 日 03:14:07。(此範圍符合 32
位有符號整數的最小值和最大值)。不過在 PHP 5.1 之前此範圍在某些系統(如
Windows)中限制為從 1970 年 1 月 1 日到 2038 年 1 月 19 日。
表格 1. 格式字串可以識別以下 format 參數的字串 format 字元 | 說明 | 返回值例子 |
---|
日 | --- | --- | d | 月份中的第幾天,有前導零的 2 位數字 | 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 到 366 | 星期 | --- | --- | W | ISO-8601 格式年份中的第幾周,每週從星期一開始(PHP 4.1.0 新加的) | 例如:42(當年的第 42 周) | 月 | --- | --- | F | 月份,完整的文字格式,例如 January 或是 March | January 到 December | m | 數字表示的月份,有前導零 | 01 到 12 | M | 三個字母縮寫表示的月份 | Jan 到 Dec | n | 數字表示的月份,沒有前導零 | 1 到 12 | t | 給定月份所應有的天數 | 28 到 31 | 年 | --- | --- | L | 是否為閏年 | 若果是閏年為 1,否則為 0 | o | ISO-8601 格式年份數字。這和
Y 的值相同,只除了若果 ISO
的星期數(W)屬於前一年或下一年,則用那一年。(PHP 5.1.0 新加) | Examples: 1999 or 2003 | Y | 4 位數字完整表示的年份 | 例如:1999 或 2003 | y | 2 位數字表示的年份 | 例如:99 或 03 | 時間 | --- | --- | a | 小寫的上午和下午值 | am 或 pm | A | 大寫的上午和下午值 | AM 或 PM | B | Swatch Internet 標準時 | 000 到 999 | g | 小時,12 小時格式,沒有前導零 | 1 到 12 | G | 小時,24 小時格式,沒有前導零 | 0 到 23 | h | 小時,12 小時格式,有前導零 | 01 到 12 | H | 小時,24 小時格式,有前導零 | 00 到 23 | i | 有前導零的分鐘數 | 00 到 59> | s | 秒數,有前導零 | 00 到 59> | 時區 | --- | --- | e | 時區標識(PHP 5.1.0 新加) | 例如:UTC,GMT,Atlantic/Azores | I | 是否為夏令時 | 若果是夏令時為 1,否則為 0 | O | 與格林威治時間相差的小時數 | 例如:+0200 | T | 本機所在的時區 | 例如:EST,MDT(【譯者注】在 Windows
下為完整文字格式,例如「Eastern Standard Time」,中文版會顯示「中國標準時間」)。 | Z | 時差偏移量的秒數。UTC 西邊的時區偏移量總是負的,UTC 東邊的時區偏移量總是正的。 | -43200 到 43200 | 完整的日期/時間 | --- | --- | c | ISO 8601 格式的日期(PHP 5 新加) | 2004-02-12T15:19:21+00:00 | r | RFC 822 格式的日期 | 例如:Thu, 21 Dec 2000 16:01:07 +0200 | U | 從 Unix 紀元(January 1 1970 00:00:00 GMT)開始至今的秒數 | 參見 time() |
格式字串中不能被識別的字元將原樣顯示。Z 格式在使用
gmdate() 時總是返回 0。
例子 1. date() 例子
<?php // 設定要用的預設時區。自 PHP 5.1 可用 date_default_timezone_set('UTC');
// 輸出類似:Monday echo date("l");
// 輸出類似:Monday 15th of August 2005 03:12:46 PM echo date('l dS \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));
/* 在格式參數中使用常量 */ // 輸出類似:Mon, 15 Aug 2005 15:12:46 UTC echo date(DATE_RFC822);
// 輸出類似:2000-07-01T00:00:00+0000 echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000)); ?>
|
|
在格式字串中的字元前加上反斜線來轉義可以避免它被按照上表解釋。若果加上反斜線後的字元本身就是一個特殊序列,那還要轉義反斜線。
例子 2. 在 date() 中轉義字元
<?php // prints something like: 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 $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() 函數來代替 date()。
參見 getlastmod(),gmdate(),mktime(),strftime()
和 time()。
| |