Php 将时间分割成时间间隔

Php 将时间分割成时间间隔,php,datetime,time,Php,Datetime,Time,我有三个输入 开始时间 结束时间 间隔时间 范例 start time - 01:00 end time - 01:30 intervel-time - 10 min 我需要像01:00、01:10、01:20、01:30这样的输出 我试过下面的代码,它不工作 <?php $startTime=strtotime("2012-07-13 01:00:00"); $endTime=strtotime("2012-07-13 01:30:00"); $time=$startTim

我有三个输入

  • 开始时间
  • 结束时间
  • 间隔时间
  • 范例

    start time - 01:00 
    end time  - 01:30 
    intervel-time  - 10 min
    
    我需要像01:00、01:10、01:20、01:30这样的输出

    我试过下面的代码,它不工作

    <?php
    
    $startTime=strtotime("2012-07-13 01:00:00");
    $endTime=strtotime("2012-07-13 01:30:00");
    
    $time=$startTime;
    while ($time < $endTime) {
        echo date('H:i:s', $time) . " - ";
        $time = strtotime('+10 minutes', $time);
        echo date('H:i:s', $time) . "<br>";
    }
    
    ?> 
    
    
    
    当我尝试以60分钟为开始和结束时间间隔时,上面的代码是有效的

    我是PHP新手

    任何人都可以帮我。

    试试这个:

    $startTime = new DateTime("2012-07-13 01:00:00");
    $endTime = new DateTime("2012-07-13 01:30:00");
    
    while ($startTime < $endTime) {
        echo $startTime->format('H:i:s') . ' - ';
        echo $startTime->modify('+10 minutes')->format('H:i:s') . "\n";
    }
    
    $startTime=新日期时间(“2012-07-13 01:00:00”);
    $endTime=新日期时间(“2012-07-13 01:30:00”);
    而($startTime<$endTime){
    echo$startTime->format('H:i:s')。-;
    echo$startTime->modify(“+10分钟”)->格式('H:i:s')。“\n”;
    }
    
    您的代码运行得很好,我刚刚添加了一个变量,用于指定时间间隔并重新设置时间格式,以便与
    相同。我需要像01:00、01:10、01:20、01:30这样的输出,最后一件事是,您应该首先打印增量的时间

    代码如下:

    $startTime=strtotime("2012-07-13 01:00:00");
    $endTime=strtotime("2012-07-13 01:30:00");
    $interval = "10";
    $time=$startTime;
    while ($time <= $endTime) {
        echo date('H:i', $time) . "<br>";
        $time = strtotime('+'.$interval.' minutes', $time);
    }
    
    $startTime=strotime(“2012-07-13 01:00:00”);
    $endTime=strottime(“2012-07-13 01:30:00”);
    $interval=“10”;
    $time=$startTime;
    
    虽然($time我认为代码按预期工作……也许您可以像这样重构它,以获得所需的准确输出:

    <?php
    
    $startTime=strtotime("2012-07-13 01:00:00");
    $endTime=strtotime("2012-07-13 01:30:00");
    $intervel="60";
    
    $time=$startTime;
    echo date('H:i', $time);
    $time = strtotime('+'.$intervel.' minutes', $time);
    while ($time <= $endTime) {
        echo "," . date('H:i', $time);
        $time = strtotime('+'.$intervel.' minutes', $time);
    }
    
    ?>
    
    
    
    如果您将时间间隔从10更改为60,那么它将只打印开始时间,因为开始时间+60高于结束时间;这是您所期望的吗?

    $start=DateTime::createFromFormat('Y-m-d H:i:s','2012-07-13 01:00:00',new DateTimeZone('Europe/Berlin');
    
    $start = DateTime::createFromFormat('Y-m-d H:i:s', '2012-07-13 01:00:00', new DateTimeZone('Europe/Berlin'));
    $end = DateTime::createFromFormat('Y-m-d H:i:s', '2012-07-13 01:30:00', new DateTimeZone('Europe/Berlin'));
    while($start <= $end) {
        echo $start->format('H:i:s'), "\n";
        $start->modify('+10 minutes');
    }
    
    $end=DateTime::createFromFormat('Y-m-dh:i:s','2012-07-13 01:30:00',新日期时区('Europe/Berlin'); 而($start格式('H:i:s'),“\n”; $start->modify(“+10分钟”); }
    您缺少最后一个可能的输出,因为这将产生与结束时间相同的值。
    a
    应该是
    a尝试使用DateTime和DateInterval:

    <?php
    $startTime = new DateTime('2012-07-13 01:00:00');
    $endTime = new DateTime('2012-07-13 01:30:00');
    
    while($startTime <= $endTime) {
        echo $startTime->format('H:i:s') . ' ';
        $startTime->add(new DateInterval('PT10M'));
    }
    ?>
    
    
    
    您可以通过和来实现这一点


    这是怎么不适合您的?输出格式是否不正确?
    $startTime = new DateTime('2012-07-13 01:00:00');
    $endTime   = new DateTime('2012-07-13 01:30:00');
    $endTime   = $endTime->modify( '+1 minute' );
    $interval  = new DateInterval('PT10M');
    $daterange = new DatePeriod($startTime, $interval ,$endTime);
    foreach($daterange as $res) {
            echo $res->format('H:i') .", ";
    }