我正在使用 DateTime 对象,但在获取特定日期的事件时遇到了这个问题。
在 Controller 中我执行以下查询:
$date = new \DateTime('today');
$activity = $em->getRepository('MyBundle:myEntity')->findOneBy(array(
'activity_date' => $date
));
这个查询的结果是null
,但是当我这样定义参数date时:
$date = new \DateTime('Wednesday, January 14, 2015');
我得到了与这个日期匹配的事件。为什么 today
不起作用?
最佳答案
我相信评论者 @prodigitalson
是对的。当您说 today
时,实际上是 now
,其格式为 YYYY-MM-DD HH:MM:SS
。
现在,如果您的 DBMS 列是 date
类型,DBMS 将首先规范化两个值,然后才进行比较。
如果您的传入参数的值为 2014-01-14 16:47:20
,将其与 2014-01-14 00:00:00
的 DBMS 值进行比较code> 将不匹配记录。
尝试以下操作:
$date = new \DateTime(); // no need for explicit `today`
$date->setTime(0,0,0); // reset hours, minutes and seconds to 0
$activity = $em->getRepository('MyBundle:myEntity')->findOneBy(array(
'activity_date' => $date
));
这行得通吗?
关于php - Symfony2 : DateTime object not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27946497/