PHP常用日期时间函数详解
在PHP开发中,日期时间函数是非常常用的,可以用于获取当前时间、格式化时间字符串、计算时间差等操作。本篇文章将详细介绍PHP常用的日期时间函数,包括获取当前时间、格式化时间字符串、计算时间差、时间戳转换等常用操作。
一、获取当前时间
获取当前时间是使用最为频繁的操作之一,PHP提供了多种获取当前时间的函数可以满足不同需求。
1.获取当前时间戳:time()
time()函数返回当前时间的unix时间戳,以秒为单位,格式类似于:1604936925。
示例代码:
echo time();
2.获取当前日期时间:date()
date()函数可以根据指定格式返回当前日期和时间。常用的格式如下:
格式|描述
-|-
Y-m-d|年-月-日
H:i:s|时:分:秒
Y年m月d日 H:i:s|年月日 时分秒
示例代码:
echo date('Y-m-d H:i:s');
输出结果如下:
2021-07-17 17:05:30
二、格式化时间字符串
格式化时间字符串是指将日期时间格式从一种形式转换为另一种形式。PHP提供了date()函数和strftime()函数用于格式化时间字符串。
1.date()函数
date()函数可以根据指定格式返回指定的日期或时间相关字符串。
格式|描述
-|-
d|月份中的第几天(前导零)
D|周几(英文缩写)
j|月份中的第几天(不带前导零)
l(小写L)|周几(完整英文)
N|ISO-8601 格式数字表示的星期中的第几天(星期一为 1,星期日为 7)
S|每月天数后缀(英语序号,2个字母 st、nd、rd 或者 th。可以和 j 一起用)
w|周几(数字表示:0(为星期日)到 6(为星期六))
z|年份中的第几天
W|ISO-8601 格式年份中的第几周
F|月份(完整英文)
m|月份(前导零)
M|月份(英文缩写)
n|月份(不带前导零)
t|指定月份的天数
L|是否为闰年
Y|四位数字的年份
y|二位数字的年份
a|上午或下午(小写字母 am 或 pm)
A|上午或下午(大写字母 AM 或 PM)
g|小时(12-小时制,不带前导零)
G|小时(24-小时制,不带前导零)
h|小时(12-小时制,带前导零)
H|小时(24-小时制,带前导零)
i|分钟数(带前导零)
s|秒数(带前导零)
u|微秒(六位数字)
示例代码:
echo date('Y-m-d H:i:s');
echo '<br>';
echo date('l');
输出结果如下:
2021-07-17 17:05:30 Saturday
2.strftime()函数
strftime()函数是date()函数的变体,它可以根据本地时间格式返回指定格式的日期时间字符串,返回的字符串和本地日期时间格式相关。常用的格式如下:
格式|描述
-|-
%a|缩写星期几(例如:Sun)
%A|完整星期几(例如:Sunday)
%b|缩写月份(例如:Jan)
%B|完整月份(例如:January)
%c|本地相应时间的日期和时间表示
%C|世纪(例如:19 表示 1900 到 1999 的 个世纪)
%d|月份中的第几天(01 至 31)
%D|日期格式: %m/%d/%y
%e|日期中的天数,不带前导零(1 至 31)
%g|ISO8601 格式的年份数字(当然只有该周属于该年时才有意义)
%G|ISO8601 格式的年份数字
%h|同 %b
%H|24 小时格式的小时数(00 至 23)
%I|12 小时格式的小时数(01 至 12)
%j|年份中的第几天(001 至 366)
%m|十进制月份(从 01 至 12)
%M|分钟数(从 00 至 59)
%n|换行符
%p|本地 A.M. 或 P.M. 的等价符
%r|12 小时格式的时间(例如:03:23:36 下午)
%R|小时和分钟,24 小时格式(例如:15:45)
%S|秒(00 至 59)
%t|制表符
%T|时间格式,24 小时格式(例如:15:45:36)
%u|星期几(1 至 7;1 代表星期一)
%U|一年中的周数(00 至 53)星期天被认定为 天干支历和阳历一样,一年的 个星期天之前的几天属于第0周。
%V|ISO8601 格式下的一周(从01至53),其中第1周是 周至少有四天处于新年之中,且星期一。
%w|十进制表示的星期几(0 至 6;0 表示星期天)
%W|一年中的周数(00 至 53)星期一被认定为 天,和U格式不同的是:要求一周至少有4天在新的一年里。
%x|本地相应日期的表示
%X|本地相应时间的表示
%y|两位数的年份表示(00 至 99)
%Y|四位数的年份表示(例如:1900)
%z|,+hhmm 或 –hhmm 的数字时区表示(例如:-0800)
%Z|时区缩写表示(例如:PST)
示例代码:
echo strftime('%Y-%m-%d %H:%M:%S');
echo '<br>';
echo strftime('%A');
输出结果如下:
2021-07-17 17:05:30 Saturday
三、计算时间差
时间差指的是两个日期之间的时间差。在PHP中,可以使用strtotime()函数来计算两个日期之间的时间差。
1.strtotime()函数
strtotime()函数可以将任何容易理解的日期时间字符串转换为Unix时间戳。
示例代码:
$start_time = strtotime('2021-07-17 16:00:00');
$end_time = strtotime('2021-07-17 17:00:00');
echo $end_time - $start_time;
输出结果为:
3600
上述代码表示计算两个日期之间的时间差,结果为3600秒,即1小时。
2.date_diff()函数
date_diff()函数可以计算两个日期之间的差,并返回一个DateInterval对象。
示例代码:
$start = new DateTime('2021-07-17 16:00:00');
$end = new DateTime('2021-07-17 17:00:00');
$interval = date_diff($start, $end);
echo $interval->format('%h hours %i minutes %s seconds');
输出结果为:
1 hours 0 minutes 0 seconds
上述代码表示计算两个日期之间的时间差,并以小时、分钟、秒数的形式输出结果。
四、时间戳转换
在PHP开发中,经常需要将时间戳转换为日期时间等格式。PHP提供了多个函数用于实现时间戳转换。
1.date()函数
可以根据指定的格式,将时间戳转换
