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() 返回時區資料庫的版本。