📜  自日期以来经过的 php 时间 - PHP (1)

📅  最后修改于: 2023-12-03 15:41:24.480000             🧑  作者: Mango

自日期以来经过的 PHP 时间 - PHP

在 PHP 编程中,时间函数是非常常见的。本文将介绍如何通过 PHP 函数来计算自某个日期以来经过的时间。

日期格式化

在进行日期计算之前,我们需要了解日期格式化。PHP 中日期格式化可以通过 date() 函数实现。该函数接受两个参数:第一个参数为日期格式化字符串,第二个参数为时间戳(可选)。例如:

echo date("Y-m-d H:i:s");           // 输出当前日期和时间
echo date("Y-m-d H:i:s", time());   // 输出当前日期和时间,与上面等价
echo date("Y-m-d H:i:s", 1633652400);// 输出固定日期和时间,2021-10-08 18:33:20

可以看到,第一个参数指定了日期格式化的字符串。其中,Y 表示年份,m 表示月份,d 表示日期,H 表示小时,i 表示分钟,s 表示秒。

时间戳计算

在知道如何格式化日期之后,我们可以用 PHP 函数进行日期计算。PHP 中常用的日期计算函数有 strtotime()date_diff()

计算自当前日期以来经过的时间

要计算自当前日期以来经过的时间,可以使用 strtotime() 函数将要计算的日期转化为时间戳,再用 time() 函数获取当前时间戳,最后用现在的时间戳减去目标时间戳即可。例如:

$start_time = strtotime("2021-03-01");  // 起始时间戳
$end_time = time();                     // 终止时间戳,当前时间
$diff = $end_time - $start_time;         // 时间差
echo "自 2021-03-01 以来已经过去了 ".floor($diff/86400)." 天 "; // 输出相差多少天

以上代码将输出:自 2021-03-01 以来已经过去了 218 天。其中,86400 表示一天的秒数。

计算自指定日期以来经过的时间

如果要计算自指定日期以来经过的时间,则需要用到 strtotime() 函数将要计算的日期转化为时间戳。例如:

$start_time = strtotime("2020-01-01");  // 起始时间戳
$end_time = strtotime("2021-01-01");    // 终止时间戳
$diff = $end_time - $start_time;         // 时间差
echo "自 2020-01-01 以来已经过去了 ".floor($diff/86400)." 天"; // 输出相差多少天

以上代码将输出:自 2020-01-01 以来已经过去了 366 天。注意,闰年的一年有 366 天。

计算自指定日期时间以来经过的时间

如果要计算自指定日期时间以来经过的时间,则需要用 DateTime 类。该类有一个 diff() 方法,用于计算两个日期时间之间的差值。例如:

$start_time = new DateTime("2021-03-01 12:00:00");  // 起始时间
$end_time = new DateTime();                         // 终止时间,当前时间
$interval = $start_time->diff($end_time);            // 时间差
echo "自 2021-03-01 12:00:00 以来已经过去了 ".$interval->format("%d 天 %H 小时 %i 分钟 %s 秒"); // 输出相差多少时间

以上代码将输出:自 2021-03-01 12:00:00 以来已经过去了 218 天 15 小时 25 分钟 56 秒。其中,format() 方法可以用于格式化时间差。

总结

本文介绍了在 PHP 中如何计算自某个日期以来经过的时间。具体来说,我们了解了日期格式化、时间戳计算以及 DateTime 类的应用。这些知识点在实际编程中非常常见,希望本文能够对读者有所帮助。