Php 将日期间隔添加到日期时间

Php 将日期间隔添加到日期时间,php,date,datetime,dateinterval,Php,Date,Datetime,Dateinterval,我有两个Datetime对象,我使用diff来获得一个间隔。然后我想把这个时间间隔添加到另一个日期,以获得将来的日期。这是我的密码: $start = new DateTime($start_date); $stop = new DateTime($end_date); $interval = $start->diff($stop); $now = new DateTime($update_date); $now->add($interval); return $now-

我有两个Datetime对象,我使用diff来获得一个间隔。然后我想把这个时间间隔添加到另一个日期,以获得将来的日期。这是我的密码:

 $start = new DateTime($start_date);
 $stop = new DateTime($end_date);
 $interval = $start->diff($stop);
 $now = new DateTime($update_date);
 $now->add($interval);
 return $now->format('Y-m-d H:i:s');
为了验证这些数字是否相加,我做了以下操作:

 echo "interval = " . $interval->format("%d days, %h hours and %i minutes");
 echo "<br/> date  = ". $update_date;
 echo "<br/> result  = ". $now->format('Y-m-d H:i:s');

那么,如果我的约会时间增加了13分钟,为什么结果会减少13分钟?

以下代码对我有效:

$start_date = '2016-01-14 12:12:00';
$end_date = '2016-01-14 12:25:00';
$update_time = '2016-01-14 16:00:00';

$start = new DateTime($start_date);
$end = new DateTime($end_date);
$interval = $start->diff($end);
$now = new DateTime($update_time);
$now->add($interval);
echo $now->format('Y-m-d H:i:s'); //2016-01-14 16:13:00

您可以在这里找到一个工作示例:

以下代码适用于我:

$start_date = '2016-01-14 12:12:00';
$end_date = '2016-01-14 12:25:00';
$update_time = '2016-01-14 16:00:00';

$start = new DateTime($start_date);
$end = new DateTime($end_date);
$interval = $start->diff($end);
$now = new DateTime($update_time);
$now->add($interval);
echo $now->format('Y-m-d H:i:s'); //2016-01-14 16:13:00
您可以在这里找到一个工作示例:

$start=new DateTime('2016-01-14 21:03:41');
$end=新日期时间('2016-01-14 21:30:05');
$interval=日期差异($start,$end);
echo$interval->format(“%d天、%h小时和%i分钟”)。“
”; $now=新日期时间('2016-01-14 21:30:05'); $now->add($interval); echo“Total:,$now->格式('Y-m-dh:i:s');
试试这个。

$start=newdatetime('2016-01-1421:03:41'); $end=新日期时间('2016-01-14 21:30:05'); $interval=日期差异($start,$end); echo$interval->format(“%d天、%h小时和%i分钟”)。“
”; $now=新日期时间('2016-01-14 21:30:05'); $now->add($interval); echo“Total:,$now->格式('Y-m-dh:i:s');
试试这个。

这个不是应该读$end而不是$stop吗$间隔=$start->diff($stop);问题已更新,感谢您指出,
$start\u date
$end\u date
$update\u date
的值是什么?不应该将$end改为$stop吗$间隔=$start->diff($stop);问题更新,感谢您指出,
$start\u date
$end\u date
$update\u date
?结尾的Yoda讲话很不错,您写道。)你是对的,sebastianbrosch,开始日期和结束日期不符合顺序,间隔实际上是负数,尽管间隔似乎没有任何迹象。谢谢你,最后我做了一点尤达的演讲,你写道你是对的,sebastianbrosch,开始日期和结束日期不符合顺序,间隔实际上是负数,尽管间隔似乎没有任何迹象。谢谢你,我喜欢
$start = new DateTime('2016-01-14 21:03:41');
$end = new DateTime('2016-01-14 21:30:05');
$interval = date_diff($start,$end);
echo $interval->format("%d days, %h hours and %i minutes")."<br/>";   
$now = new DateTime('2016-01-14 21:30:05'); 
$now->add($interval);
echo "Total  : ", $now->format('Y-m-d H:i:s');