📜  在 php 中计算从开始日期时间到结束日期时间的总时间(1)

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

在 PHP 中计算从开始日期时间到结束日期时间的总时间

在 PHP 中,我们可以使用内置的 DateTime 类来计算从开始日期时间到结束日期时间的总时间。

计算时间差

要计算时间差,我们需要创建两个 DateTime 对象,一个代表开始时间,一个代表结束时间,然后使用 diff() 方法来计算它们之间的时间差。

$startTime = new DateTime('2021-08-01 12:00:00');
$endTime = new DateTime('2021-08-02 14:30:00');

$interval = $endTime->diff($startTime);

echo $interval->format('%d days %h hours %i minutes %s seconds');

输出将会是 1 days 2 hours 30 minutes 0 seconds

时间差格式

format() 方法中使用的时间差格式字符串由以下部分组成:

  • %Y:整数形式的年份,如 2021。
  • %m:整数形式的月份(带前导零),如 08。
  • %d:整数形式的天数(带前导零),如 01。
  • %a:距离开始时间的总天数。
  • %H:整数形式的小时数(带前导零),如 12。
  • %h:整数形式的小时数(无前导零),如 2。
  • %I:整数形式的分钟数(带前导零),如 30。
  • %i:整数形式的分钟数(无前导零),如 30。
  • %S:整数形式的秒数(带前导零),如 05。
  • %s:整数形式的秒数(无前导零),如 5。
  • %f:秒后面的微秒数(带前导零),如 001000。
  • %F:秒后面的微秒数(无前导零),如 1000。
  • %R:小时和分钟,如 12:30。
  • %T:小时、分钟、秒,如 12:30:05。
计算时间戳之差

如果我们有两个 Unix 时间戳表示的时间点,可以使用简单的算术运算来计算它们之间的时间差。

$startTime = strtotime('2021-08-01 12:00:00');
$endTime = strtotime('2021-08-02 14:30:00');

$diffInSeconds = $endTime - $startTime;

$diffInMinutes = $diffInSeconds / 60;
$diffInHours = $diffInMinutes / 60;
$diffInDays = $diffInHours / 24;

echo "时间差为:{$diffInSeconds} 秒,{$diffInMinutes} 分钟,{$diffInHours} 小时,{$diffInDays} 天";

输出将会是 时间差为:97200 秒,1620 分钟,27 小时,1.125 天

总结

这就是在 PHP 中计算从开始日期时间到结束日期时间的总时间的方法。你可以使用 DateTime 类来计算时间差,或者使用 Unix 时间戳来进行算术运算。