在本教程中,您將學(xué)習(xí)如何在PHP中提取或格式化日期和時(shí)間。
PHP date()函數(shù)將時(shí)間戳轉(zhuǎn)換為更具可讀性的日期和時(shí)間。
計(jì)算機(jī)以稱為UNIX時(shí)間戳的格式存儲(chǔ)日期和時(shí)間,該時(shí)間以自Unix紀(jì)元開始(以格林威治標(biāo)準(zhǔn)時(shí)間1970年1月1日午夜,即1970年1月1日00:00:00 GMT)開始的秒數(shù)為單位進(jìn)行測(cè)量。
由于這種格式對(duì)于人類來(lái)說(shuō)是不人性化的,PHP 將時(shí)間戳轉(zhuǎn)換為人類可讀的格式,并將日期從您的符號(hào)轉(zhuǎn)換為計(jì)算機(jī)能夠理解的時(shí)間戳。函數(shù)的語(yǔ)法可以使用。
date(format, timestamp)
date()函數(shù)中的format參數(shù)是必需的,用于指定返回的日期和時(shí)間的格式。但是,timestamp是可選參數(shù),如果不包括在內(nèi),則將使用當(dāng)前日期和時(shí)間。以下語(yǔ)句顯示今天的日期:
<?php $today = date("d/m/Y"); echo $today; ?>測(cè)試看看?/?
注意:PHP date()函數(shù)根據(jù)執(zhí)行腳本的Web服務(wù)器的內(nèi)置時(shí)鐘返回當(dāng)前日期和時(shí)間。
date()函數(shù)的format參數(shù)實(shí)際上是一個(gè)可以包含多個(gè)字符的字符串,它允許您生成一個(gè)包含日期和時(shí)間的各種組件的日期字符串,如星期幾、上午或下午等。下面是格式字符串中常用的一些與日期相關(guān)的格式化字符:
d - 表示每月的第幾天;前導(dǎo)為零兩位的數(shù)字(01 或 31)
D - 表示星期幾縮寫(周一到周日)
m - 表示月份,帶有前導(dǎo)零的數(shù)字(01 或 12)
M - 表示月份縮寫(Jan 到 Dec)
y - 用兩位數(shù)字表示年份(08 或 14)
Y - 四位數(shù)字表示年份(2008 或 2014)
可以通過(guò)插入其他字符(例如連字符(-),點(diǎn)(.),斜杠(/)或空格)來(lái)分隔日期的各個(gè)部分,以添加其他視覺(jué)格式。
<?php echo date("d/m/Y") . "<br>"; echo date("d-m-Y") . "<br>"; echo date("d.m.Y"); ?>測(cè)試看看?/?
提示:您可以使用PHP date()函數(shù)自動(dòng)更新網(wǎng)站上的版權(quán)聲明,例如:Copyright © 2010-<?php echo date("Y")?>.
同樣,您可以使用以下字符來(lái)格式化時(shí)間字符串:
h - 以12小時(shí)格式表示小時(shí),前導(dǎo)零(01至12)
H - 以24小時(shí)格式表示小時(shí),前導(dǎo)零(00至23)
i - 表示分鐘,前導(dǎo)零(00到59)
s - 表示秒,前導(dǎo)零(00到59)
a - 表示小寫的午前和午后(上午或下午)
A - 表示大寫的午前和午后(上午或下午)
以下示例中的PHP代碼以不同的格式顯示日期:
<?php echo date("h:i:s") . "<br>"; echo date("F d, Y h:i:s A") . "<br>"; echo date("h:i a"); ?>測(cè)試看看?/?
time()函數(shù)用于獲取當(dāng)前時(shí)間作為Unix時(shí)間戳(自Unix紀(jì)元開始的秒數(shù):1970年1月1日00:00:00 GMT)。
<?php //執(zhí)行時(shí)間:2014-03-05 07:19:18 $timestamp = time(); echo($timestamp); ?>測(cè)試看看?/?
上面的示例產(chǎn)生以下輸出。
1394003958
通過(guò)將時(shí)間戳傳遞給先前引入的date()函數(shù),我們可以將其轉(zhuǎn)換為人類可讀的日期。
<?php $timestamp = 1394003958; echo(date("Y-m-d H:i:s", $timestamp)); ?>測(cè)試看看?/?
上面的示例產(chǎn)生以下輸出。
2014-03-05 07:19:18
mktime()函數(shù)用于根據(jù)特定的日期和時(shí)間創(chuàng)建時(shí)間戳。如果未提供日期和時(shí)間,則返回當(dāng)前日期和時(shí)間的時(shí)間戳。
mktime()函數(shù)的語(yǔ)法可以通過(guò)以下方式給出:
mktime(hour, minute, second, month, day, year)
以下示例顯示了與2014年5月10日下午3:20:12相對(duì)應(yīng)的時(shí)間戳記:
<?php //創(chuàng)建特定日期的時(shí)間戳 echo mktime(15, 20, 12, 5, 10, 2014); ?>測(cè)試看看?/?
上面的示例產(chǎn)生以下輸出。
1399735212
注意:您可以根據(jù)需要保留任意數(shù)量的參數(shù),而將使用與當(dāng)前時(shí)間相對(duì)應(yīng)的值。如果省略所有參數(shù),則mktime()函數(shù)將返回與當(dāng)前日期和時(shí)間相對(duì)應(yīng)的UNIX時(shí)間戳,就像time()。
mktime()函數(shù)可用于查找與特定日期相對(duì)應(yīng)的工作日名稱。為此,只需在您的時(shí)間戳記中使用'l'('L'的小寫)字符,如以下示例所示,它顯示了2014年4月1日這一天:
<?php //獲取特定日期的工作日名稱 echo date('l', mktime(0, 0, 0, 4, 1, 2014)); ?>測(cè)試看看?/?
上面的示例產(chǎn)生以下輸出。
Tuesday
mktime()函數(shù)還可用于在特定時(shí)間段后的將來(lái)查找特定日期。 如以下示例所示,它顯示從當(dāng)前日期起30個(gè)月后的日期?
<?php //執(zhí)行日期為2014年3月5日 $futureDate = mktime(0, 0, 0, date("m")+30, date("d"), date("Y")); echo date("d/m/Y", $futureDate); ?>測(cè)試看看?/?
上面的示例產(chǎn)生以下輸出。
05/09/2016
請(qǐng)查看PHP日期/時(shí)間函數(shù)參考部分,以獲取PHP中所有可用的日期和時(shí)間函數(shù)的完整列表。