如何使用PHP时间和日期函数
PHP中提供了许多时间和日期函数,用于获取当前时间、格式化时间、计算时间间隔等操作。在开发中,我们需要熟练掌握这些函数,才能快速完成相关功能的实现。本文将介绍几个常用的PHP时间和日期函数及其用法。
1. date()函数
date()函数可用于格式化一个时间戳,并返回一个格式化后的字符串。语法如下:
date(string $format, [int $timestamp = time()])
$format参数指定日期/时间的格式,$timestamp参数是可选的,用于指定要格式化的时间戳。如果没有指定$timestamp参数,则默认使用当前时间戳。
常用的参数和格式如下:
参数 | 说明 | 示例
------|-----------------------|------------------
Y | 年份,四位数 | 2022
m | 月份,有前导零 | 01-12
n | 月份,无前导零 | 1-12
d | 月份中的天数,有前导零 | 01-31
j | 月份中的天数,无前导零 | 1-31
H | 24小时制的小时数,有前导零 | 00-23
G | 24小时制的小时数,无前导零 | 0-23
i | 分钟数,有前导零 | 00-59
s | 秒数,有前导零 | 00-59
示例:
echo date('Y-m-d H:i:s'); // 输出当前时间,格式为'2022-01-01 12:00:00'
echo date('Y年m月d日 H时i分s秒'); // 输出当前时间,格式为'2022年01月01日 12时00分00秒'
2. time()函数
time()函数用于获取当前时间戳(1970年1月1日 00:00:00至当前时间的秒数)。语法如下:
time()
示例:
echo time(); // 输出当前时间戳,如1641109691
3. strtotime()函数
strtotime()函数用于将人类可读时间转化为Unix时间戳。语法如下:
strtotime(string $time, [int $now = time()])
$time参数指定要转换的字符串形式的时间,$now参数是可选的,用于指定当前时间戳。该函数支持的时间格式非常多,以下是一些常见的:
格式 | 说明 | 示例
-----------------|--------------------------------------------------------|---------------------
yyyy-mm-dd | 年-月-日 | 2022-01-01
yyyy/mm/dd | 年/月/日 | 2022/01/01
dd-mm-yyyy | 日-月-年 | 01-01-2022
dd/mm/yyyy | 日/月/年 | 01/01/2022
mm/dd/yyyy | 月/日/年 | 01/01/2022
mm-dd-yyyy | 月-日-年 | 01-01-2022
yyyy-mm-dd hh:ii | 年-月-日 小时:分钟,其中小时使用24小时制,有前导零 | 2022-01-01 12:00
yyyy/mm/dd hh:ii | 年/月/日 小时:分钟,其中小时使用24小时制,有前导零 | 2022/01/01 12:00
dd-mm-yyyy hh:ii | 日-月-年 小时:分钟,其中小时使用24小时制,有前导零 | 01-01-2022 12:00
dd/mm/yyyy hh:ii | 日/月/年 小时:分钟,其中小时使用24小时制,有前导零 | 01/01/2022 12:00
mm/dd/yyyy hh:ii | 月/日/年 小时:分钟,其中小时使用24小时制,有前导零 | 01/01/2022 12:00
mm-dd-yyyy hh:ii | 月-日-年 小时:分钟,其中小时使用24小时制,有前导零 | 01-01-2022 12:00
示例:
echo strtotime('2022-01-01'); // 输出时间戳1640995200,即2022年1月1日00:00:00的时间戳
echo strtotime('2022/01/01 12:00'); // 输出时间戳1641049200,即2022年1月1日12:00:00的时间戳
4. mktime()函数
mktime()函数用于返回一个日期的Unix时间戳。语法如下:
mktime([int $hour = date('H')], [int $minute = date('i')], [int $second = date('s')], [int $month = date('n')], [int $day = date('j')], [int $year = date('Y')], [int $is_dst = -1])
该函数支持的参数如下:
参数 | 说明 | 示例
---------|----------------------------------|-----------------------------
hour | 小时数,使用24小时制,范围为0-23 | 12
minute | 分钟数,范围为0-59 | 30
second | 秒数,范围为0-59 | 0
month | 月份,范围为1-12 | 1
day | 天数,范围为1-31 | 1
year | 年份,四位数,范围为1970-2038 | 2022
is_dst | 可选参数,用于指定是否考虑夏令时 | -1(默认)/0/1
示例:
echo mktime(12, 0, 0, 1, 1, 2022); // 输出1641024000,即2022年1月1日12:00:00的时间戳
5. strtotime()和date()的结合应用
在日常开发中,我们经常需要将时间格式化为不同的显示方式,或者将字符串类型的时间转换为时间戳,并进行一些计算。这时候可以结合使用strtotime()和date()函数,进行相应的操作。
示例1:获取当前时间的前一天的时间戳。
$now = time();
$yesterday = strtotime('-1 day', $now);
echo $yesterday; // 输出昨天的时间戳
示例2:将时间戳转为指定的格式。
$timestamp = time(); // 获取当前时间戳
echo date('Y年m月d日 H时i分s秒', $timestamp); // 输出格式为'2022年01月01日 12时00分00秒'的时间
综上所述,PHP时间和日期函数是PHP开发中非常重要的一部分,我们需要认真研究并灵活运用,才能更好地实现各种功能。
