Php 制定时间表的正确方法

Php 制定时间表的正确方法,php,date,Php,Date,我一直在争论是否应该使用日期函数,或者是否有一种更干净的方法来生成给定一天的分钟数组,此时我的代码是这样的 function emptySchedule() { $emptySchedule = []; for ($h = 0; $h < 24; ++$h) { for ($m = 0; $m < 60; ++$m) { $emptySchedule[str_pad($h, 2, '0'

我一直在争论是否应该使用日期函数,或者是否有一种更干净的方法来生成给定一天的分钟数组,此时我的代码是这样的

 function emptySchedule()
    {
        $emptySchedule = [];
        for ($h = 0; $h < 24; ++$h) {
            for ($m = 0; $m < 60; ++$m) {
                $emptySchedule[str_pad($h, 2, '0', STR_PAD_LEFT).':'.str_pad($m, 2, '0', STR_PAD_LEFT)] = [];
            }
        }

        return $emptySchedule;
    }
函数emptySchedule()
{
$emptySchedule=[];
对于($h=0;$h<24;++$h){
对于($m=0;$m<60;++$m){
$emptySchedule[str_pad($h,2,'0',str_pad_LEFT.):'。str_pad($m,2,'0',stru pad_LEFT)]=[];
}
}
返回$emptySchedule;
}
但它只会让人感觉脏兮兮的,有没有更好的方法来达到同样的效果,或者有没有更好的方法用日期对象来处理一天中的分钟数,或者更好的方法是全球公认的正确的方法?我不喜欢使用软件包,但如果有好的软件包,我愿意接受

编辑;在某些情况下,我将在一天中的每一分钟中放入数组

EDIT2:为了实现这一目的,不需要任何输入,我的最后一个函数是

public function emptySchedule()
{
    $startDate = date_create("today"); //Any start date works
    $endDate = date_create("tomorrow"); //Any end date works
    $step = new \DateInterval("PT1M"); //1 minute, can change
    $date = $startDate;
    $times = [];
    while ($date <= $endDate) {
        $times[$date->format("H:i")] =  [];
        $date = $date->add($step);
    }

    return $times;
}
公共函数emptySchedule()
{
$startDate=date_create(“今天”);//任何开始日期都有效
$endDate=date_create(“明天”);//任何结束日期都有效
$step=new\DateInterval(“PT1M”);//1分钟,可以更改
$date=$startDate;
$times=[];
而($日期格式(“H:i”)]=[];
$date=$date->add($step);
}
返回$times;
}

好吧,更优雅的代码方法是:

<?php
function emptySchedule($hoursInit = date('G'), $hoursActive = 24)
    {
        $emptySchedule = [];
        for ($h = $hoursInit; $h < $hoursActive; ++$h) {
           for ($m = 0; $m < 60; ++$m) {
             $emptySchedule[sprintf('%02d:%02d', $h, $m)] = [];
           }  
        }

        return $emptySchedule;
}
这就是我要做的:

$startDate = date_create("today"); //Any start date works
$endDate = date_create("tomorrow"); //Any end date works
$step = new DateInterval("PT1M"); //1 minute, can change
$date = $startDate;
$times = [];
while ($date <= $endDate) {
      $times[$date->format("H:i")] =  [];
      $date = $date->add($step);
}

print_r($times);
$startDate=date\u创建(“今天”);//任何开始日期都有效
$endDate=date_create(“明天”);//任何结束日期都有效
$step=new DateInterval(“PT1M”);//1分钟,可以更改
$date=$startDate;
$times=[];
而($日期格式(“H:i”)]=[];
$date=$date->add($step);
}
打印(次);

并非所有的日子都有24小时…!仅出于这个原因,你就应该使用日期函数。啊,我没有想到夏令时,我完全不知道如何解决这个问题,也许我需要一个新鲜的早晨喝咖啡,我在工作的最后一个小时太累了!!罗伯特,给我们展示一个理想输出的例子来帮助解决这个问题解决方案,请。@calexandre一切都在问题中:p.我不确定最佳实践,但我会在一天中的每一分钟都加入数组(请参见编辑,我想你错过了它:D)我认为你的答案和下面的答案的组合可能是我正在寻找的“干净”方法,遗憾的是我不能接受两个答案:(!
$startDate = date_create("today"); //Any start date works
$endDate = date_create("tomorrow"); //Any end date works
$step = new DateInterval("PT1M"); //1 minute, can change
$date = $startDate;
$times = [];
while ($date <= $endDate) {
      $times[$date->format("H:i")] =  [];
      $date = $date->add($step);
}

print_r($times);