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