2016-01-14 233 views
1

我有2个日期时间对象,我使用差异来获取间隔。然后我想将此间隔添加到另一个日期以便将来获得日期。这里是我的代码:将日期时间间隔添加到日期时间

$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'); 

,我得到这个:

interval = 0 days, 0 hours and 13 minutes 
date = 2016-01-14 21:03:41 
result = 2016-01-14 20:50:22 

所以,如果林将13分钟我的约会,为什么结果少了13分钟?

+0

不应该这样读取$ end而不是$ stop? $ interval = $ start-> diff($ stop); – MacGyer

+0

问题已更新,谢谢指出 – Severian

+0

'$ start_date','$ end_date','$ update_date'的值是什么? –

回答

0

下面的代码为我工作:

$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 

的工作例如,你可以在这里找到:https://3v4l.org/P3rKU

+0

你写道,尤达说话的好处。 ;) –

+0

你是正确的sebastianbrosch,开始日期和结束日期是无序的,间隔时间实际上是负面的,尽管看起来间隔没有迹象。谢谢,我是 – Severian

0
$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'); 

试试这个。