PHP 时间计算
时间计算是程序开发中非常常见的问题,而 PHP 提供了一些方便的函数来进行时间计算,本文将介绍一些常用的时间计算函数。
1. strtotime 函数
strtotime 函数将一个日期字符串解析成 Unix 时间戳,例如:
$timestamp = strtotime("2019-10-08 00:00:00"); echo $timestamp; // 输出:1570502400在上面的例子中,strtotime 函数将日期字符串 "2019-10-08 00:00:00" 解析成 Unix 时间戳 1570502400,该时间戳表示的是 "2019-10-08 00:00:00" 这个时刻距离 Unix 时间戳 0 的秒数。 strtotime 函数还可以处理一些相对时间表达式,例如:
echo strtotime("+1 day"); // 明天这个时刻的 Unix 时间戳 echo strtotime("next Monday"); // 下周一这个时刻的 Unix 时间戳 echo strtotime("last day of this month"); // 本月最后一天这个时刻的 Unix 时间戳2. date 函数 date 函数将 Unix 时间戳格式化成需要的日期字符串,例如:
echo date("Y-m-d H:i:s", 1570502400); // 输出:"2019-10-08 00:00:00"在上面的例子中,date 函数将 Unix 时间戳 1570502400 格式化成了 "2019-10-08 00:00:00" 这个日期字符串。 date 函数还可以处理一些常用的日期格式,例如:
echo date("Y年m月d日"); // 输出:"2019年10月08日" echo date("D, d M Y H:i:s T"); // 输出:"Tue, 08 Oct 2019 00:00:00 UTC"3. time 函数 time 函数返回当前 Unix 时间戳,例如:
echo time(); // 输出当前 Unix 时间戳4. mktime 函数 mktime 函数将一个日期时间转换成 Unix 时间戳,例如:
$timestamp = mktime(0, 0, 0, 10, 8, 2019); echo $timestamp; // 输出:1570502400在上面的例子中,mktime 函数将 "2019-10-08 00:00:00" 这个日期时间转换成 Unix 时间戳 1570502400。 mktime 函数的参数分别是时、分、秒、月、日、年,如果某个参数省略,将默认为当前值。 5. strtotime 和 date 组合使用 strtotime 和 date 可以很方便地组合使用,例如:
echo date("Y-m-d", strtotime("+1 day")); // 输出明天的日期字符串在上面的例子中,先使用 strtotime 函数计算出明天这个时刻的 Unix 时间戳,再用 date 函数将该时间戳格式化成日期字符串。 6. 时间差计算函数 PHP 还提供了一些方便的函数来计算时间差,例如:
$now = time(); $target = strtotime("2020-01-01 00:00:00"); $diff = $target - $now; $days = floor($diff / (24 * 60 * 60)); $hours = floor(($diff - $days * 24 * 60 * 60) / (60 * 60)); $minutes = floor(($diff - $days * 24 * 60 * 60 - $hours * 60 * 60) / 60); $seconds = $diff - $days * 24 * 60 * 60 - $hours * 60 * 60 - $minutes * 60; echo "距离 2020 年还有 " . $days . " 天 " . $hours . " 小时 " . $minutes . " 分钟 " . $seconds . " 秒";在上面的例子中,先计算出当前时间到 "2020-01-01 00:00:00" 之间的时间差,然后将时间差转换成天、小时、分钟、秒等单位。 总结 本文介绍了 PHP 中常用的时间计算函数,包括 strtotime、date、time、mktime 和时间差计算函数等,这些函数在实际开发中非常有用。程序员应当掌握这些函数的用法,以便更加高效地完成时间计算相关的任务。