PHP date() 函数用于格式化日期和时间。

PHP date() 函数

PHP date() 函数使用给定的整数时间戳返回根据指定格式字符串格式化的字符串,如果没有给出时间戳,则返回当前时间。

语法

date(format, timestamp) 

参数

format必填。 指定格式字符串以格式化输出的日期字符串。请参阅下表了解格式选项。
timestamp可选。 指定表示日期的 Unix 时间戳。如果省略或为空,则默认为当前本地时间。

格式参数字符串

配合使用
格式字符说明返回值示例
d一月中的第几天,带前导零的 2 位数字01 到 31
D一天的文本表示,三个字母周一到周日
j一月中的某天,不带前导零1 到 31
l(小写"L" )星期几的完整文本表示周日到周六
NISO-8601 数字表示星期几1(星期一)到 7(星期日)
S表示月份中日期的英文序数后缀,2 个字符st、nd、rd 或 th。与 j
w一周中的某一天的数字表示0(表示星期日)到 6(表示星期六)
z一年中的哪一天(从 0 开始)0 到 365
WISO-8601 一年中的周数,从星期一开始的周示例:42(一年中的第 42 周)
月份
F月份的完整文本表示,例如一月或三月一月到十二月
m月份的数字表示,带前导零01 到 12
Ma 的简短文本表示月份,三个字母Jan 到 Dec
n月份的数字表示形式,不带前导零1 到 12
t给定月份的天数28 到 31
年份
L是否为闰年1 if为闰年,否则为 0。
oISO-8601 周编号年份。这与 Y 的值相同,但如果 ISO 周数 (W) 属于上一年或下一年,则使用该年。示例:1999 或 2003
Y年份的完整数字表示,4 位示例:1999 或 2003
y年份的两位数表示示例:99 或 03
时间
a小写的午前和午后am 或 pm
A大写中午前和下午后AM 或 PM
BSwatch 互联网时间000 到 999
g12 小时格式的小时,不带前导零1到 12
G24 小时格式的小时,不带前导零0 到 23
h12 小时格式的小时,带前导零01 到 12
H24 小时格式的小时,带前导零00 到 23
i带前导零的分钟00 到 59
s带前导零的秒00 到 59
u微秒。示例:654321
v毫秒。同样的注释适用于 u。示例:654
时区
e时区标识符示例:UTC、GMT、大西洋/亚速尔群岛
I(大写 i)日期是否为夏令时如果是夏令时则为1,否则为0。
O与格林威治时间 (GMT) 的时差和分钟之间不带冒号示例:+0200
P与格林威治时间的时差时间(GMT),小时和分钟之间带冒号示例:+02:00
p与 P 相同,但返回 Z 而不是 +00:00示例:+02:00
T时区缩写(如果已知);否则为 GMT 偏移量。示例:EST、MDT、+05
Z时区偏移量(以秒为单位)。 UTC 以西的时区的偏移始终为负,UTC 以东的时区的偏移始终为正。-43200 到 50400
完整日期/时间
cISO 8601 日期2004-02-12T15:19:21+00:00
rRFC 2822 格式化日期示例:Thu, 21 Dec 2000 16:01:07 +0200
U自 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)以来的秒数参见 time() 方法。

获取日期

下面的示例演示如何使用date()函数获取日期。

<?php
//显示当前日期信息
echo "Today is ". date("Y/m/d") ."\n";
echo "Today is ". date("d-M-Y") ."\n";
echo "Today is ". date("l") ."\n\n";

//显示有关给定时间戳的信息
echo "Timestamp is ". date("Y/m/d", 1500292845) ."\n";
echo "Timestamp is ". date("d-M-Y", 1500292845) ."\n";
?> 

上述代码的输出将类似于:

Today is 2021/11/29
Today is 29-Nov-2021
Today is Monday

Timestamp is 2017/07/17
Timestamp is 17-Jul-2017 

获取时间

考虑下面的示例,其中 date()函数用于获取时间。

<?php
//显示当前日期信息
echo "Current time is ". date("h:i:s A") ."\n";

//显示有关给定时间戳的信息
echo "Time in Timestamp is ". date("h:i:s A", 1500292845) ."\n";
?> 

上述代码的输出将类似于:

Current time is 04:25:48 AM
Time in Timestamp is 12:00:45 PM 

获取日期和时间

考虑下面的示例其中 date() 函数用于获取日期和时间。

<?php
//显示当前日期信息
echo "Today: ". date("l, d-M-Y h:i:s A") ."\n";

//显示有关给定时间戳的信息
echo "Timestamp: ". date("l, d-M-Y h:i:s A", 1500292845) ."\n";
?> 

上述代码的输出将类似于:

Today: Monday, 29-Nov-2021 04:27:54 AM
Timestamp: Monday, 17-Jul-2017 12:00:45 PM 

PHP time () 函数

PHP time() 函数返回自 Unix 纪元(1970 年 1 月 1 日 00:00: 00 GMT)。

语法

time() 

下面的示例显示了 time() 函数的用法。

<?php
//获取以数字形式测量的当前时间
//自 Unix 纪元以来的秒数
$currtime = time();
echo "Time elapsed since Unix Epoch: ".
$currtime." seconds\n";

//使用date()函数来格式化
//当前时间; date() 函数使用
//time()默认作为第二个参数
echo  "Current time: ".date('Y-m-d') ."\n";
?> 

输出上面的代码将类似于:

Time elapsed since Unix Epoch: 1638160528 seconds
Current time: 2021-11-29 

使用 mktime() 创建日期

PHP mktime() 函数返回与给定参数相对应的 Unix 时间戳。此时间戳是一个长整数,包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)与指定时间之间的秒数。

参数可以按从右到左的顺序省略。因此省略的任何参数都将根据本地日期和时间设置为当前值。

语法

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

参数

hour可选。 指定相对于一天开始的小时数。负值指的是当天午夜之前的一小时。大于 23 的值参考接下来几天的适当时间。
注意:从 PHP 8.0.0 开始,此参数不再是可选的。
minute可选。 指定相对于小时开始的分钟数。负值参考前一小时的分钟。大于 59 的值引用随后一小时内的相应分钟。
second可选。 指定相对于分钟开始的秒数。负值引用前一分钟的第二个。大于 59 的值引用下一分钟中的相应秒数。
month可选。 指定相对于上一年年底的月份数。小于 1 的值以相反顺序引用上一年的月份,例如:0 为 12 月,-1 为 11 月等。大于 12 的值引用下一年中的相应月份。
day可选。 指定相对于上个月月底的天数。小于 1 的值引用上个月的天数,例如:0 是上个月的最后一天,-1 是上个月的前一天等。大于相关月份的天数的值引用相应的日期在接下来的月份中。
year可选。 指定年份,可以是两位或四位数字的值。如果以两位数格式指定,则 00-69 之间的值映射到 2000-2069,70-99 映射到 1970-1999。

下面的示例显示了 mktime() 函数的用法。

<?php
//使用mktime()函数创建时间戳
$d = mktime(10, 20, 30, 8, 17, 2017);

//显示有关给定时间戳的信息
echo "Created Date is: ". date("l, d-M-Y h:i:s A", $d) ."\n";  
?> 

上述代码的输出将是:

Created Date is: Thursday, 17-Aug-2017 10:20:30 AM 

从字符串创建日期with strtotime()

PHP strtotime() 函数将任何英文文本 datetime 描述转换为 Unix 时间戳(自 1970 年 1 月 1 日 00:00:00 UTC 起的秒数)。

该函数尝试将 datetime 字符串解析为 Unix 时间戳,相对于 baseTimestamp 中给定的时间戳,或当前时间(如果未提供baseTimestamp)。

语法

strtotime(datetime, baseTimestamp) 

参数

datetime必填。 指定日期/时间字符串。它应该采用有效的日期和时间格式。
baseTimestamp可选。 指定时间戳,用作计算相对日期的基础。

下面的示例显示了strtotime 的用法() 函数。

<?php
//当前时间作为Unix时间戳和
//使用 date() 函数格式化它
echo strtotime("now")."\n"; 
echo date("d-M-Y", strtotime("now"))."\n";

//比当前时间提前1周
echo "\n".strtotime("+1 week")."\n"; 
echo date("d-M-Y", strtotime("+1 week"))."\n";

//比当前时间提前1周2天5小时
echo "\n".strtotime("+1 week 2 days 5 hours")."\n"; 
echo date("d-M-Y", strtotime("+1 week 2 days 5 hours"))."\n";
?> 

上述代码的输出将类似于:

1638161505
29-Nov-2021

1638766305
06-Dec-2021

1638957105
08-Dec-2021 

完整的 PHP 日期和时间参考

对于所有 PHP 日期和时间函数的完整参考,请参阅完整的 PHP 日期和时间参考。