PHP日期与时间函数解析,让你的时间处理更简单
PHP是一种通用的开源脚本语言,特别适用于Web开发。PHP提供了大量的日期和时间处理函数,使得日期和时间处理更加灵活和简单。本文将结合实例,介绍PHP中常用的日期与时间函数及用法,帮助读者更好地进行时间处理。
一. 时间戳
首先,我们需要了解时间戳(Timestamp)——表示自1970年1月1日0时0分0秒以来的秒数。在PHP中,我们可以通过函数time()来获取当前的Unix时间戳,也可以使用其他函数来将Unix时间戳转换为人类友好的格式。例如:
1.获取当前时间戳
echo time();
2.将时间戳转为日期格式
echo date("Y-m-d H:i:s", time()); //2022-07-17 08:25:00
3. 获取指定日期的时间戳
echo strtotime("2020-01-01"); //1577836800
4. 计算两个日期之间的差值
$date1 = strtotime("2022-01-01"); $date2 = strtotime("2022-07-17");
$diff = abs($date1 - $date2);
echo "相差天数:" . floor($diff / (60*60*24)) . "天"; //相差天数:197天
二. date()函数
date()函数可以将时间戳格式化为人类可读的格式。以下是常用日期格式的输出示例:
1.输出当前时间
echo date("Y-m-d H:i:s");
2.输出当前日期
echo date("Y-m-d");
3.输出当前时间某一部分
echo date("H:i:s"); //输出当前时间的时分秒
4.将Unix时间戳转换为人类可读的日期格式
echo date("Y-m-d H:i:s", 1577836800); //2020-01-01
三. strtotime()函数
strtotime()函数可以将英文日期格式转换为Unix时间戳,也可以将日期字符串转换为Unix时间戳。以下是示例:
1.将英文日期格式转换为Unix时间戳
echo strtotime("now"); //当前时间的时间戳
echo strtotime("10 September 2000"); //返回此日期的时间戳
echo strtotime("+1 day"); //明天的时间戳
echo strtotime("+1 week"); //下周的时间戳
echo strtotime("+1 month"); //下个月的时间戳
2.将日期字符串转换为Unix时间戳
echo strtotime("2022-01-01"); //返回2022-01-01的时间戳
echo strtotime("2020-01-01 +1 year"); //返回2021-01-01的时间戳
四. time()函数
time()函数返回当前的Unix时间戳,以秒为单位。以下为示例:
1.获取当前时间戳
echo time();
五. mktime()函数
mktime()函数用于创建一个日期的Unix时间戳,常用于计算时间差。以下是示例:
1.创建指定日期的时间戳
echo mktime(0, 0, 0, 1, 1, 2022); //返回2022-01-01的时间戳
2.计算两个日期之间的时间戳差异
$date1 = mktime(0, 0, 0, 1, 1, 2022); $date2 = mktime(0, 0, 0, 7, 17, 2022);
echo $date2 - $date1; //15724800
六. gmdate()函数
gmdate()函数与date()函数类似,但是不会使用本地时区而是使用GMT时间。以下为示例:
1.输出当前格林威治时间
echo gmdate("Y-m-d H:i:s");
2.输出指定格林威治时间
echo gmdate("Y-m-d H:i:s", 1660296204);
七. getdate()函数
getdate()函数可以将Unix时间戳转换为一个数组,包含了有用的日期信息。以下为示例:
1.获取当前日期的信息
print_r(getdate());
2.获取指定日期的信息
print_r(getdate(1577836800));
八. strtotime()与时间格式的关系
date()、getdate()、gmdate()这三个函数已经比较常见了,建议熟练掌握。而mktime()和time(),在某些时候也是非常好用的。而strtotime()是PHP中非常有用的时间聚合和差异计算函数。各位可能会被strtotime()的参数搞的晕头转向,下面简单介绍一下常见的时间格式:
1.绝对时间格式(注意有空格)
YYYY-MM-DD HH:MM:SS
如:"2022-07-17 14:27:20"
注意,使用这种格式必须保证时区与服务器时区一致,否则得出的时间不正确。例如:北京时间与格林威治时间之间相差8个小时,因此在北京时间2015-01-01 00:00:00使用strtotime()方法转换会得到1970-01-01 08:00:00这样的结果。
2.相对时间格式
下面列出了常见的相对时间格式:
格式 描述
now 当前日期和时间
+y 年份增加y年
-y 年份减少y年
+m 月份增加m个月
-m 月份减少m个月
+w 星期增加w个星期
-w 星期减少w个星期
+d 天数增加d天
-d 天数减少d天
如:
echo strtotime("+1 year"); //1581798772
echo strtotime("-1 year"); //1528366772
echo strtotime("+1 month"); //1559894772
echo strtotime("-1 month"); //1552302772
3.时间戳格式
在PHP的date()函数中,用printf()函数将第二个参数格式化成Unix时间戳格式,通常格式为"%T"或"%s"。例如:
echo date("Y-m-d H:i:s", strtotime("2015-01-01")); //2015-01-01 00:00:00
以上就是PHP中常用的日期与时间函数的介绍,希望能帮助到读者。在实际开发中,掌握这些函数可以帮助我们更好地处理时间,加快开发效率。
