dongyakui8675 2017-09-28 10:59
浏览 27
已采纳

PHP代码修正时间间隔添加

This is my current code and below is the output of this code.But I need to do some correction on this.

$startTimeInterval = 15;
$duration = 20;
$open = '2017-09-29T10:00:00-05:00';
$close = '2017-09-29T17:30:00-05:00';

$startTimeInterval = $startTimeInterval.' minutes';
$interval = DateInterval::createFromDateString($startTimeInterval);
$begin = new DateTime($open);
$end = new DateTime($close);
$end->add($interval);

$periods = iterator_to_array(new DatePeriod($begin, $interval, $end));

$start = array_shift($periods);
$slot = array();
foreach ($periods as $time) {
    $slot[]= $start->format('h:iA'). ' - '. $time->format('h:iA');
    $start = $time;
}
echo '<pre>';print_r($slot);exit;

OutPut

[0] => 10:00AM - 10:15AM
[1] => 10:15AM - 10:30AM
[2] => 10:30AM - 10:45AM
[3] => 10:45AM - 11:00AM
[4] => 11:00AM - 11:15AM
........
[28] => 05:00PM - 05:15PM
[29] => 05:15PM - 05:30PM

I need this

[0] => 10:00AM - 10:20AM
[1] => 10:15AM - 10:35AM
[2] => 10:30AM - 10:50AM
[3] => 10:45AM - 11:05AM
[4] => 11:00AM - 11:20AM
........
[28] => 05:00PM - 05:20PM
[29] => 05:15PM - 05:35PM

Horizontally it will add duration and vertically it will add startTimeInterval

  • 写回答

1条回答 默认 最新

  • dongmu1996 2017-09-28 11:15
    关注

    Perhaps this is a solution:

    Your $time is of type DateTime

    You could clone the $time and in the loop add 5 minutes.

    For example:

    foreach ($periods as $time) {
        $clonedTime = clone $time;
        $clonedTime->modify('+5 minutes');
    
        $slot[]= $start->format('h:iA'). ' - '. $clonedTime->format('h:iA');
        $start = $time;
    }
    

    Will result in:

    Array
    (
        [0] => 10:00AM - 10:20AM
        [1] => 10:15AM - 10:35AM
        [2] => 10:30AM - 10:50AM
        [3] => 10:45AM - 11:05AM
        [4] => 11:00AM - 11:20AM
        [5] => 11:15AM - 11:35AM
        [6] => 11:30AM - 11:50AM
        [7] => 11:45AM - 12:05PM
        [8] => 12:00PM - 12:20PM
        [9] => 12:15PM - 12:35PM
        [10] => 12:30PM - 12:50PM
        [11] => 12:45PM - 01:05PM
        [12] => 01:00PM - 01:20PM
        [13] => 01:15PM - 01:35PM
        [14] => 01:30PM - 01:50PM
        [15] => 01:45PM - 02:05PM
        [16] => 02:00PM - 02:20PM
        [17] => 02:15PM - 02:35PM
        [18] => 02:30PM - 02:50PM
        [19] => 02:45PM - 03:05PM
        [20] => 03:00PM - 03:20PM
        [21] => 03:15PM - 03:35PM
        [22] => 03:30PM - 03:50PM
        [23] => 03:45PM - 04:05PM
        [24] => 04:00PM - 04:20PM
        [25] => 04:15PM - 04:35PM
        [26] => 04:30PM - 04:50PM
        [27] => 04:45PM - 05:05PM
        [28] => 05:00PM - 05:20PM
        [29] => 05:15PM - 05:35PM
    )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line