PHP中两个日期的总和

时间:2011-09-08 05:30:57

标签: php date sum

我如何总结两个日期?

我有两个日期格式为j h:i:s我想和它们相加

我找到了这个脚本,但没有关于天的参考,我是新手,这是脚本,也许有人可以进行必要的修改。

<?php

/**
 * @author Masino Sinaga, http://www.openscriptsolution.com
 * @copyright October 13, 2009
 */

echo sum_the_time('01:45:22', '17:27:03');  // this will give you a result: 19:12:25

function sum_the_time($time1, $time2) {
  $times = array($time1, $time2);
  $seconds = 0;
  foreach ($times as $time)
  {
    list($hour,$minute,$second) = explode(':', $time);
    $seconds += $hour*3600;
    $seconds += $minute*60;
    $seconds += $second;
  }
  $hours = floor($seconds/3600);
  $seconds -= $hours*3600;
  $minutes  = floor($seconds/60);
  $seconds -= $minutes*60;
  return "{$hours}:{$minutes}:{$seconds}";
}

?>

用法:

我需要的是从两个任务中总结两个日期: 任务1将花费1天10小时20分10秒 任务2将需要3天17小时35分40秒

所以结果将是任务1和两个之间的总时间

2 个答案:

答案 0 :(得分:6)

使用strtotime转换日期并将时间戳相加,然后使用日期函数再次转换为日期:

$tmstamp = strtotime($date1) + strtotime($date2);
echo date("Y m d", $tmstamp) ;

但为什么你会在第一时间添加两个日期?

答案 1 :(得分:-1)

他们所做的就是将小时和分钟转换成秒并添加。然后他们转换回小时/分钟。

您只需要将天数转换为秒数:

$seconds += $days * 3600 * 24 

然后转换回来:

$days = floor($seconds/(3600*24));
$seconds -= $days*3600*24