Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中按时间间隔显示列表_Php_Symfony_Doctrine - Fatal编程技术网

如何在PHP中按时间间隔显示列表

如何在PHP中按时间间隔显示列表,php,symfony,doctrine,Php,Symfony,Doctrine,如何在PHP中按时间间隔显示列表 例如:在特定的一天从00:00小时到15:30小时。我试着这样做: 我在同一天从00:00开始花了15小时30分钟。这样做的目的是在这两个小时之间显示列表。我错了什么 $todayMidday = new \DateTime('now'); $todayMidday->sub(new \DateInterval('PT15H30M')); return $this->createQueryBuilder('b') ->andWhere

如何在PHP中按时间间隔显示列表

例如:在特定的一天从00:00小时到15:30小时。我试着这样做:

我在同一天从00:00开始花了15小时30分钟。这样做的目的是在这两个小时之间显示列表。我错了什么

$todayMidday = new \DateTime('now');
$todayMidday->sub(new \DateInterval('PT15H30M'));

return $this->createQueryBuilder('b')
    ->andWhere('b.reservationDate <= :today')
    ->andWhere('b.reservationDate >= :today')
    ->orderBy('b.hours', $order)
    ->setParameter('today', $todayMidday->format('Y-m-d'))
    ->setMaxResults($limit)
    ->getQuery()
    ->getResult();
$todayMidday=new\DateTime('now');
$todayMidday->sub(新建\DateInterval('PT15H30M');
返回$this->createQueryBuilder('b')
->andWhere('b.reservationDate=:today')
->orderBy('b.hours',$order)
->setParameter('today',$todayMidday->格式('Y-m-d'))
->setMaxResults($limit)
->getQuery()
->getResult();

您的代码有很多地方出错。你是新来的,我会尽力帮助你。但我不知道为什么这个问题被记下来了。到目前为止,这两条评论与您的问题并不相关

这里的一个问题是在\DateTime中使用“sub”,而且您只有一个\DateTime对象。最后,当您查询数据库时,您将完全占用时间

“sub”函数从日期中减去间隔。因此,代码的意思是:“获取当前日期和时间,然后从中减去15小时30分钟,现在选择所有小于或等于、大于或等于今天日期的记录(忽略时间)”

您想要的是有两个\DateTime对象,一个用于结束时间,另一个用于开始时间。例如:

//get the current date time
$timeFrom = new \DateTime();
//now set the time to 00:00
$timeFrom->setTime(0,0,0);

//get the current date time
$timeTo = new \DateTime();
//now set the time to 00:00
$timeTo->setTime(15,30,0);

return $this->createQueryBuilder('b')
    ->andWhere('b.reservationDate <= :timeTo')
    ->andWhere('b.reservationDate >= :timeFrom')
    ->orderBy('b.hours', $order)
    ->setParameter('timeTo', $timeTo->format('Y-m-d H:i:s'))
    ->setParameter('timeFrom', $timeFrom->format('Y-m-d H:i:s'))
    ->setMaxResults($limit)
    ->getQuery()
    ->getResult();
//获取当前日期时间
$timeFrom=new\DateTime();
//现在将时间设置为00:00
$timeFrom->setTime(0,0,0);
//获取当前日期和时间
$timeTo=new\DateTime();
//现在将时间设置为00:00
$timeTo->setTime(15,30,0);
返回$this->createQueryBuilder('b')
->andWhere('b.reservationDate=:timeFrom')
->orderBy('b.hours',$order)
->setParameter('timeTo',$timeTo->format('Y-m-dh:i:s'))
->setParameter('timeFrom',$timeFrom->format('Y-m-dh:i:s'))
->setMaxResults($limit)
->getQuery()
->getResult();

当然,有许多不同的方法可以设置日期/时间,但需要注意的关键点是1\DateTime对象一次只能保存一个日期和时间。您可以按任意间隔更改该日期或时间,但它将仅保留1个新时间。它没有范围。

请为您的问题提供更多的上下文。您使用的框架是什么,您的代码片段中的
$this
是什么,您的数据源是什么?小时
字段的类型是什么?非常感谢@Mark,我已经尝试过了,它对我有效。我又看了一遍代码,我完全同意你所说的!