PHP 日期和時間

在本教程中,你將學習如何在 PHP 中提取或格式化日期和時間。

PHP Date() 函式

PHP date() 函式將時間戳轉換為更易讀的日期和時間。

計算機以稱為 UNIX 時間戳的格式儲存日期和時間,該時間戳測量時間為自 Unix 時代開始以來的秒數(格林威治標準時間 1970 年 1 月 1 日午夜,即格林威治標準時間 1970 年 1 月 1 日 00:00:00) 。

由於這是人們閱讀的一種不切實際的格式,因此 PHP 會將時間戳轉換為人類可讀的格式,並將你的記法日期轉換為計算機可以理解的時間戳。 date() 可以使用 PHP 函式的語法。

date(format , timestamp) 

date() 函式中的 format 引數是必需的,它指定返回日期和時間的格式。但是, timestamp 是可選引數,如果沒有給出的話,則將使用當前日期和時間。以下語句顯示今天的日期:

<?php
$today = date("d/m/Y");
echo $today;
?>

注意: PHP date() 函式根據執行指令碼的 Web 伺服器的內建時鐘返回當前日期和時間。

PHP 格式化日期和時間

date() 函式的 format 引數實際上是一個字串,可以包含多個字元,允許你生成一個日期字串,其中包含日期和時間的各種組成部分,如星期幾,上午或下午等。以下是一些日期 -格式字串中常用的相關格式化字元:

  • d - 代表該月的某一天; 帶前面填充零的兩位數(01 或 31)
  • D - 以文字縮寫(Mon to Sun)代表星期幾
  • m - 以前面填充零表示月份數字(01 或 12)
  • M - 以文字表示月份縮寫(Jan-Dec
  • y - 以兩位數字表示年份(08 或 14)
  • Y - 代表四位數的年份(2008 年或 2014 年)

可以通過插入其他字元(如連字元(-),點(.),斜槓(/)或空格來分隔日期的各個部分,以新增其他可視格式。

<?php
echo date("d/m/Y") . "<br>";
echo date("d-m-Y") . "<br>";
echo date("d.m.Y");
?>

提示: 你可以使用 PHP date() 函式自動更新網站上的版權期限,例如: Copyright &copy; 2010-<?php echo date("Y")?>.

同樣,你可以使用以下字元格式化時間字串:

  • h - 以 12 小時格式表示小時,前面填充零(01 到 12)
  • H - 以 24 小時格式表示小時,前面填充零(00 至 23)
  • i - 用前面填充零(00 到 59)代表分鐘
  • s - 用前面填充零(00 到 59)表示秒數
  • a - 代表小寫的上下午(am 或 pm)
  • A - 代表大寫的上下午(AM 或 PM)

以下示例中的 PHP 程式碼以不同格式顯示日期:

<?php
echo date("h:i:s") . "<br>";
echo date("F d, Y h:i:s A") . "<br>";
echo date("h:i a");
?>

PHP time() 函式

time() 函式用於將當前時間作為 Unix 時間戳(自 Unix 時期開始以來的秒數:1970 年 1 月 1 日 00:00:00 GMT)。

<?php
// Executed at March 05, 2014 07:19:18
$timestamp = time();
echo($timestamp);
?>

以上示例生成以下輸出。

1394003958

我們可以將此時間戳轉換為人類可讀日期,方法是將其傳遞給之前介紹的 date() 函式。

<?php
$timestamp = 1394003958;
echo(date("F d, Y h:i:s", $timestamp));
?>

以上示例生成以下輸出。

March 05, 2014 07:19:18

PHP mktime() 函式

mktime() 函式用於根據特定日期和時間建立時間戳。如果未提供日期和時間,則返回當前日期和時間的時間戳。

mktime() 函式的語法如下:

mktime ( hour , minute , second , month , day , year ) 

以下示例顯示 2014 年 5 月 10 日下午 3:20:12 對應的時間戳:

<?php
// Create the timestamp for a particular date
echo mktime(15, 20, 12, 5, 10, 2014);
?>

以上示例生成以下輸出。

1399735212

注意: 你可以根據需要省略任意數量的引數,而是使用與當前時間對應的值。如果省略所有引數,mktime() 函式將返回與當前日期和時間對應的 UNIX 時間戳,就像 time()

mktime() 函式可用於查詢與特定日期對應的星期幾。要執行此操作,只需在時間戳中使用 l(小寫 L)字元,如下例所示,該示例顯示 2014 年 4 月 1 日的日期:

<?php
// Get the weekday name of a particular date
echo date('l', mktime(0, 0, 0, 1, 4, 2014));
?>

以上示例生成以下輸出。

Saturday

mktime() 函式還可用於在特定時間段之後查詢將來的特定日期。如下例所示,顯示從當前日期起 30 個月後的日期。

<?php
// Executed at March 05, 2014
$futureDate = mktime(0, 0, 0, date("m")+30, date("d"), date("Y"));
echo date("d/m/Y", $futureDate);
?>

以上示例生成以下輸出。

05/09/2016