0

我有一个用 Symfony 编写的网络服务。应用程序调用它并输入必须在特定时间发送到应用程序的消息。服务器上的 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) 是否有一种干净的方式来查询这些项目?

4

1 回答 1

3

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

于 2013-08-09T10:16:21.167 回答