我试图计算服务的持续时间以获得结束时间。每项服务的持续时间值均以分钟为单位,分别为:30
,40
,50
。
每个会话都会在一个小时内开始(例如11:00,12:00,13:00)。
如果总持续时间落在整整一小时(例如12:00,13:00,14:00),则应将其设置为前一小时和59分钟(例如,11:59,12:59,13 :59)。如果选择了两个30分钟的服务,就会发生这种情况 - 例如。
但是如果它过了一个小时,比如结束时间是12:20或13:30,那么结束时间应该设置为12:59或13:59。
到目前为止,这是我的代码:
$startTime = $_POST['datetime']; // (2015-09-09 11:00)
# calculate total duration of services in order to get end time
foreach($_POST['service'] as $service){
list($service_id,$service_duration) = explode(';',$service); // values stored as id;duration
$service_ids[] = (int)$service_id; // new array with ids
$services_duration_total += (int)$service_duration; // in minutes
}
//
# calculate end time
$endTime_actual = getdate(strtotime('+'.$services_duration_total.' minutes', strtotime($_POST['datetime']))); // actual end time
我试过这个方法:
$endTime_offset = (60-$endTime_actual['minutes'])-1; // calculate munutes left in the hour
$endTime = date('Y-m-d H:i',strtotime('+'.$endTime_offset.' minutes',$endTime_actual[0])); // new end time
如果总持续时间超过60分钟,则无效,但如果完全持续时间超过60分钟,则无效,因为它会持续整整一个小时。在这些情况下,正如我所提到的,我需要将脚本舍入到最后一小时,然后是59分钟..
我不确定我是否正确解释了这一点,但希望你能得到我想要完成的事情。