db和application中的不同日期(时间) - 10分钟

时间:2016-03-29 18:03:07

标签: php mysql symfony

我有一个非常奇怪的问题。我从数据库获取对象,这个对象在应用程序中有不同的日期 - 总是10分钟。我完全不了解这里发生的事情。我使用Symfony2和MySql(MariaDB)。下面的例子(18:50和18:40):

enter image description here enter image description here

有人有点想法吗?为什么f ** 10分钟,时区在几小时内有所不同..我完全是愚蠢的。求助。

代码:

$synch = $this->getDoctrine()->getManager()->getRepository('LizukKiteBundle:Synchronization')->createQueryBuilder('s')
        ->orderBy('s.id', 'desc')
        ->setMaxResults(1)
        ->getQuery()
        ->getResult()
    ;

    if ($synch) {
        $synch = $synch[0];
    } else {
        $synch = null;
    }
    dump($synch);die();

//编辑:

我发现总是只有最后一条记录是错误的日期打印 - 但为什么呢?我不知道:/

如果我从db获得更多对象,那么只有最后一个是"被破坏"。也许它对某人有帮助?

enter image description here enter image description here

enter image description here enter image description here

上面只有最后一条记录 - 我猜这个问题出现在代码中..但它看起来还不错。

EDIT ///

好的,问题解决了。我忘记了我在侦听器中的这个数据库表中的最后一个对象,也是在onKernelRequest方法中。而且我在克隆'中遇到了基本的错误。代码:(

我有:

$maintenanceTime = clone $maintenanceTime; //cloning Synchronization object here
$maintenanceTime = $maintenanceTime->getDate();
$maintenanceTime->modify('+5 minutes');

解决方案是:

$maintenanceTime = clone $maintenanceTime->getDate(); //clonning DateTime object
$maintenanceTime->modify('+5 minutes');

不要问我为什么会创建这个弱代码。 请求帮助并浪费你的时间。

2 个答案:

答案 0 :(得分:0)

啊,是的,我有同样的问题,但不是PHP也不是Symfony2,而是Java。这是一个普遍的问题。

我遇到的问题是我们在Java7上运行的应用程序不支持微秒,但只支持毫秒。您的数据库似乎在诱骗您认为它具有值2015-03-29 18:40:18,但它确实具有类似2015-03-29 18:40:18.123456的内容。因此,当您尝试将datetime字符串解析为DateTime对象时,它会将前3位数加到前3位,产生足够的时间偏移,大约10分钟(在我的情况下,它是12分钟)。

所以,我想,解决方法是检查数据库引擎如何存储DateTime。它是典型的datetime类型还是别的什么?

希望这可以解决这个问题:)

答案 1 :(得分:0)

好的,问题解决了。我忘记了我在侦听器中的这个数据库表中的最后一个对象,也是在onKernelRequest方法中。我在'克隆'代码中遇到了基本错误:(

我有:

$maintenanceTime = clone $maintenanceTime; //cloning Synchronization object here
$maintenanceTime = $maintenanceTime->getDate();
$maintenanceTime->modify('+5 minutes');

解决方案是:

$maintenanceTime = clone $maintenanceTime->getDate(); //clonning DateTime object
$maintenanceTime->modify('+5 minutes');

不要问我为什么会创建这个弱代码。请求帮助并浪费你的时间。