Symfony Doctrine按日期时间和时区查询条目



我有一个用Symfony编写的Web服务。应用程序调用它并输入消息,这些消息必须在特定时间发送到应用程序。服务器上的cronjob每分钟运行一次,并检查必须发送哪些消息。但是用户可以定义他想要接收这些消息的时间范围。

我通过以下方式查询这些消息:

$query = $em->createQuery('
    SELECT m
    FROM MyBundle:Message m
    INNER JOIN m.user u
    WHERE m.active = true
        AND m.nextMessageOn <= :now
        AND u.receiveMessagesFrom <= :now
        AND u.receiveMessagesTo >= :now
    ORDER BY m.id ASC
')->setParameter('now', new DateTime('now'));

(出于演示目的,"从时间"必须在"到时间"之前)

现在我遇到了一个问题,用户可以使用与服务器不同的时区

是否有某种最佳实践来处理漏洞时间(日期时间)/时区/服务器/应用程序问题?尤其是对于Symfony(Doctrine)来说,有没有一种干净的方式来查询这些项目?

您应该在数据库中为用户保存正确的时区,并阅读以下内容:http://docs.doctrine-project.org/en/latest/cookbook/working-with-datetime.html

最新更新