Symfony2:DateTime对象不起作用

Alf*_*edo 5 php datetime symfony doctrine-orm

我正在使用DateTime对象并遇到此问题以获取特定日期的活动.

在控制器中,我执行以下查询:

$date = new \DateTime('today');
$activity = $em->getRepository('MyBundle:myEntity')->findOneBy(array(
    'activity_date' => $date
));
Run Code Online (Sandbox Code Playgroud)

此查询的结果是null,但是当我以这种方式定义参数日期时:

$date = new \DateTime('Wednesday, ?January ?14, ?2015');
Run Code Online (Sandbox Code Playgroud)

我得到了与此日期匹配的活动.为什么不起作用today

Jov*_*vic -3

我相信评论者@prodigitalson是对的。当你说today这实际上now是用YYYY-MM-DD HH:MM:SS.

现在,如果您的 DBMS 列的类型为date,DBMS 将首先规范化两个值,然后才继续进行比较。

如果传入参数的值为2014-01-14 16:47:20,则将其与 DBMS 值进行比较2014-01-14 00:00:00不会匹配记录

请尝试以下操作:

$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
));
Run Code Online (Sandbox Code Playgroud)

这行得通吗?

  • 为什么要使用 `$date = new \DateTime(); $date->setTime(0,0,0);`,当 `today` 关键字已经将时间设置为 `00:00:00` 时? (2认同)