如果整整一个小时,则向下舍入时间,如果在php中执行整整一小时,则为向上

时间:2015-09-09 12:20:20

标签: php date datetime

我试图计算服务的持续时间以获得结束时间。每项服务的持续时间值均以分钟为单位,分别为:304050

每个会话都会在一个小时内开始(例如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分钟..

我不确定我是否正确解释了这一点,但希望你能得到我想要完成的事情。

0 个答案:

没有答案