如何根据开始时间和持续时间计算结束时间?

如何根据开始时间和持续时间计算结束时间?

问题描述:

我正在构建一个事件日历并将开始时间传递给PHP,格式为2009-09-25 15:00:00。持续时间也会通过,可能是60分钟或3小时的格式。从小时转换到分钟不是问题。如何将一段时间添加到已建立的起点以正确格式化结束时间?如何根据开始时间和持续时间计算结束时间?

使用strtotime()可以将当前时间(2009-09-25 15:00:00)转换为一个时间戳,然后添加(60 * 60 * 3 = 3小时)到时间戳。最后把它转换回任何你想要的时间。

//Start date 
$date = '2009-09-25 15:00:00'; 
//plus time 
$plus = 60 * 60 * 3; 
//Add them 
$time = strtotime($date) + $plus; 
//Print out new time in whatever format you want 
print date("F j, Y, g:i a", $time); 
+0

建议使用此解决方案。 – dusoft 2009-08-23 16:48:06

+0

我最终使用了这个,修改日期格式为'Y-m-d h:i:s' – 2009-08-24 23:39:30

简单的方法,如果你有足够高的版本号:

$when = new DateTime($start_time); 
$when->modify('+' . $duration); 
echo 'End time: ' . $when->format('Y-m-d h:i:s') . "\n"; 
+1

这工作对我来说,但我不得不补充。 $ duration之后的'秒',因为我的持续时间以秒为单位存储。 – 2017-03-04 08:41:43

作为附录@ Xeoncross的好strtotime答案,strtotime()支持的格式,如“2009-09-253小时”,“9月25日6天”,“下周一”,“上周五” “-15分钟”等。