简体   繁体   中英

Need 10 intervals between two time stamps

I need 10 intervals between two time stamps. Please find the example below.

start_date: 2021-01-15 15:45:00 end_date: 2021-01-15 18:00:00

I need result like below based on count of intervals. I can change 5 interval or 7 intervals but the time need to calculate automatically based on intervals

  1. 15:45:00
  2. 16:00:00
  3. 16:15:00
  4. 16:30:00
  5. 16:45:00
  6. 17:00:00
  7. 17:15:00
  8. 17:30:00
  9. 17:45:00
  10. 18:00:00
function SplitTime($StartTime, $EndTime, $Duration="60"){

    $ReturnArray = array ();// Define output
    $StartTime    = strtotime ($StartTime); //Get Timestamp
    $EndTime      = strtotime ($EndTime); //Get Timestamp
    $AddMins  = $Duration * 60;
    while ($StartTime <= $EndTime) //Run loop
    {
        $ReturnArray[] = date ("G:i:s", $StartTime);
        $StartTime += $AddMins; //Endtime check
    }
    return $ReturnArray;
}

You can use a division of the number of seconds between the 2 dates:

function SplitTime($StartTime, $EndTime, $Division = 10){
    $ReturnArray = array (); // Define output
    $StartTime = strtotime ($StartTime); //Get Timestamp
    $EndTime = strtotime ($EndTime); //Get Timestamp

    //Time diff
    $diff = $EndTime - $StartTime;
    // number of seconds by "step"
    $num = $diff / ($Division - 1);
    
    for ($inum = 0; $inum < $Division; $inum++)
    {
        $ReturnArray[] = date ("G:i:s", $StartTime + $num * $inum);
    }
    return $ReturnArray;
}


$dates = SplitTime("2021-01-15 15:45:00", "2021-01-15 18:00:00");
print_r($dates);

Outputs:

Array
(
    [0] => 15:45:00
    [1] => 16:00:00
    [2] => 16:15:00
    [3] => 16:30:00
    [4] => 16:45:00
    [5] => 17:00:00
    [6] => 17:15:00
    [7] => 17:30:00
    [8] => 17:45:00
    [9] => 18:00:00
)

See online demo

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM