返回当天的小时数

时间:2018-03-15 12:01:16

标签: php time

我有这个功能:

$starDate  = "2018-03-10";
$endDate = "2018-03-15";

private static function getDefaultEmptyArray($starDate,$endDate)
{
        $returnArray=array();
        $begin = new DateTime( $starDate );
        $end = new DateTime( $endDate );
        $end->add(new DateInterval('P1D'));

        $interval = DateInterval::createFromDateString('1 day');
        $period = new DatePeriod($begin, $interval, $end);

        foreach ($period as $dt) {

            $returnArray[$dt->format("Y-m-d")]['clicks'] = 0;
            $returnArray[$dt->format("Y-m-d")]['payout'] = 0;
            $returnArray[$dt->format("Y-m-d")]['sales'] = 0;

        }
        return $returnArray;
    }

那就是给我一个像这样的数组:

["2018-03-10"]=>
  {
    ["clicks"]=>"0"
    ["payout"]=>"0"
    ["sales"]=>"0"
  }

......

["2018-03-15"]=>
  {
    ["clicks"]=>"0"
    ["payout"]=>"0"
    ["sales"]=>"0"
  }

是否在2018-03-10和2018-03-15之间返回一个范围日期数组。

我的问题是,我如何更新此功能,以便在00AM 01AM 02AM ...... 22PM,23PM等数组中回复我当天的小时数,如天数范围。

1 个答案:

答案 0 :(得分:0)

不要在开始日期添加1天的间隔,而是向他们添加一小时的间隔:

$interval = DateInterval::createFromDateString('1 hour');

之后,您只需输出循环中的当前时间:

foreach ($period as $dt) {
    $returnArray[$dt->format("Y-m-d HA")]['clicks'] = 0;
    $returnArray[$dt->format("Y-m-d HA")]['payout'] = 0;
    $returnArray[$dt->format("Y-m-d HA")]['sales'] = 0;
}