PHP 日期詳細介紹
- 2021 年 12 月 1 日
- 筆記
簡介
你可以使用這些函數獲取運行 PHP 的伺服器的日期和時間, 也可以使用這些函數把日期和時間 格式化成不同格式的字元串。
日期和時間資訊在 PHP 內部是以 64 位數字存儲的, 它可以覆蓋當前時間前後 2920 億年的時間,這個範圍之廣,足以滿足現有應用的實際需求。
date() 函數
PHP date() 函數可把時間戳格式化為可讀性更好的日期和時間。
Tip時間戳是一個字元序列,表示一定的事件發生的日期/時間。
語法
string date ( string $format [, int $timestamp ] )
| 參數 | 描述 |
|---|---|
| format | 必需。規定時間戳的格式。 |
| timestamp | 可選。規定時間戳。默認是當前的日期和時間。 |
PHP Date() - 格式化日期
date() 函數的第一個必需參數 format 規定了如何格式化日期/時間。
這裡列出了一些可用的字元:
- d - 代表月中的天 (01 - 31)
- m - 代表月 (01 - 12)
- Y - 代表年 (四位數)
如需了解 format 參數中可用的所有字元列表,請查閱我們的 PHP Date 參考手冊php-ref-date),date() 函數。
可以在字母之間插入其他字元,比如 "/"、"." 或者 "-",這樣就可以增加附加格式了:
<?php echo date("Y/m/d") . "<br>"; echo date("Y.m.d") . "<br>"; echo date("Y-m-d"); ?>
上面程式碼的輸出如下所示:
2016/10/21 2016.10.21 2016-10-21
格式字串可以識別以下 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 到 365 |
星期
| format 字元 | 說明 | 返回值例子 |
|---|---|---|
| W | ISO-8601 格式年份中的第幾周,每周從星期一開始(PHP 4.1.0 新加的) | 例如:42(當年的第 42 周) |
月
| format 字元 | 說明 | 返回值例子 |
|---|---|---|
| F | 月份,完整的文本格式,例如 January 或者 March | January 到 December |
| m | 數字表示的月份,有前導零 | 01 到 12 |
| M | 三個字母縮寫表示的月份 | Jan 到 Dec |
| n | 數字表示的月份,沒有前導零 | 1 到 12 |
| t | 給定月份所應有的天數 | 28 到 31 |
年
| format 字元 | 說明 | 返回值例子 |
|---|---|---|
| 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 |
時間
| format 字元 | 說明 | 返回值例子 |
|---|---|---|
| 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> |
| u | 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函數總是返回 000000 因為它只接受 integer 參數, 而 DateTime::format() 才支援毫秒。 | 示例: 654321 |
時區
| format 字元 | 說明 | 返回值例子 |
|---|---|---|
| e | 時區標識(PHP 5.1.0 新加) | 例如:UTC,GMT,Atlantic/Azores |
| I | 是否為夏令時 | 如果是夏令時為 1,否則為 0 |
| O | 與格林威治時間相差的小時數 | 例如:+0200 |
| P | 與格林威治時間(GMT)的差別,小時和分鐘之間有冒號分隔(PHP 5.1.3 新加) | 例如:+02:00 |
| T | 本機所在的時區 | 例如:EST,MDT(【譯者注】在 Windows 下為完整文本格式,例如"Eastern Standard Time",中文版會顯示"中國標準時間")。 |
| Z | 時差偏移量的秒數。UTC 西邊的時區偏移量總是負的,UTC 東邊的時區偏移量總是正的。 | -43200 到 43200 |
完整的日期或時間
| format 字元 | 說明 | 返回值例子 |
|---|---|---|
| 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() |
完整的 PHP Date 參考手冊
如需查看所有日期函數的完整參考手冊,請訪問 完整的 PHP Date 參考手冊。
該參考手冊提供了每個函數的簡要描述和應用實例!
PHP Date/Time 函數
| 函數 | 描述 |
|---|---|
| checkdate() | 驗證格利高里日期。 |
| date_add() | 添加日、月、年、時、分和秒到一個日期。 |
| date_create_from_format() | 返回一個根據指定格式進行格式化的新的 DateTime 對象。 |
| date_create() | 返回一個新的 DateTime 對象。 |
| date_date_set() | 設置一個新的日期。 |
| date_default_timezone_get() | 返回默認時區,被所有的 Date/Time 函數使用。 |
| date_default_timezone_set() | 設置默認時區,被所有的 Date/Time 函數使用。 |
| date_diff() | 返回兩個日期間的差值。 |
| date_format() | 返回根據指定格式進行格式化的日期。 |
| date_get_last_errors() | 返回日期字元串中的警告/錯誤。 |
| date_interval_create_from_date_string() | 從字元串的相關部分建立一個 DateInterval。 |
| date_interval_format() | 格式化時間間隔。 |
| date_isodate_set() | 設置 ISO 日期。 |
| date_modify() | 修改時間戳。 |
| date_offset_get() | 返回時區偏移。 |
| date_parse_from_format() | 根據指定的格式返回一個帶有指定日期的詳細資訊的關聯數組。 |
| date_parse() | 返回一個帶有指定日期的詳細資訊的關聯數組。 |
| date_sub() | 從指定日期減去日、月、年、時、分和秒。 |
| date_sun_info() | 返回一個包含有關指定日期與地點的日出/日落和黃昏開始/黃昏結束的資訊的數組。 |
| date_sunrise() | 返回指定日期與地點的日出時間。 |
| date_sunset() | 返回指定日期與地點的日落時間。 |
| date_time_set() | 設置時間。 |
| date_timestamp_get() | 返回 Unix 時間戳。 |
| date_timestamp_set() | 設置基於 Unix 時間戳的日期和時間。 |
| date_timezone_get() | 返回給定 DateTime 對象的時區。 |
| date_timezone_set() | 設置 DateTime 對象的時區。 |
| date() | 格式化本地日期和時間。 |
| getdate() | 返回某個時間戳或者當前本地的日期/時間的日期/時間資訊。 |
| gettimeofday() | 返回當前時間。 |
| gmdate() | 格式化 GMT/UTC 日期和時間。 |
| gmmktime() | 返回 GMT 日期的 UNIX 時間戳。 |
| gmstrftime() | 根據區域設置格式化 GMT/UTC 日期和時間。 |
| idate() | 格式化本地時間/日期為整數。 |
| localtime() | 返回本地時間。 |
| microtime() | 返回當前 Unix 時間戳的微秒數。 |
| mktime() | 返回一個日期的 Unix 時間戳。 |
| strftime() | 根據區域設置格式化本地時間/日期。 |
| strptime() | 解析由 strftime() 生成的時間/日期。 |
| strtotime() | 將任何英文文本的日期或時間描述解析為 Unix 時間戳。 |
| time() | 返回當前時間的 Unix 時間戳。 |
| timezone_abbreviations_list() | 返回包含夏令時、偏移量和時區名稱的關聯數組。 |
| timezone_identifiers_list() | 返回帶有所有時區標識符的數值數組。 |
| timezone_location_get() | 返回指定時區的位置資訊。 |
| timezone_name_from_abbr() | 根據時區縮略語返回時區名稱。 |
| timezone_name_get() | 返回時區的名稱。 |
| timezone_offset_get() | 返回相對於 GMT 的時區偏移。 |
| timezone_open() | 創建一個新的 DateTimeZone 對象。 |
| timezone_transitions_get() | 返回時區的所有轉換。 |
| timezone_version_get() | 返回時區資料庫的版本。 |

