如何根据开始时间和持续时间计算结束时间?
问题描述:
我正在构建一个事件日历并将开始时间传递给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);
答
简单的方法,如果你有足够高的版本号:
$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分钟”等。
建议使用此解决方案。 – dusoft 2009-08-23 16:48:06
我最终使用了这个,修改日期格式为'Y-m-d h:i:s' – 2009-08-24 23:39:30