仅以 UTC 格式存储原则 2 日期时间



也有类似的问题,但我找不到任何与 Doctrine2 配置有关的问题,所以这里是......

我已经阅读了描述 Doctrine2 时区的页面,我只想澄清一下,因为不清楚如何实际使用它:http://doctrine-orm.readthedocs.org/en/latest/cookbook/working-with-datetime.html

我想以 UTC 格式存储日期时间,以便每个用户都可以根据其位置拥有关联的时区,但数据是通用存储的。

基本上,数据是商店的营业时间(例如,上午 9 点开门,下午 6 点关门)。商店将跟踪其时区,因此当商店中的人们设置"开放"时间时,他们正在处理商店的时区,时间将转换为UTC并存储在数据库中。接下来,当其他用户查看商店营业时间时,他们将看到自己时区或商店时区的营业时间。这应该没关系,因为我的时间是 UTC,所以我可以将它们转换为任何时区。

因此,教义文档显示了这个示例:

class UTCDateTimeType extends DateTimeType
{
// ...
}

但它没有说明如何使用它。我是否必须将列声明为"UTCDateTime"而不是"DateTime"?这个类需要住在哪里,以便教义知道这种类型的存在?

我刚刚发现了一篇关于时间戳行为的文章的这一部分,这似乎是一个更简单的解决方案:

配置.yml

doctrine:
    dbal:
        types: 
            datetime: AcmeDoctrineExtensionsDBALTypesUTCDateTimeType

您需要在 Doctrine 引导程序中注册该类型,并在映射中使用 UTCDateTime。这是一篇解释如何做的博客文章: http://symfony2.ylly.fr/add-new-data-type-in-doctrine-2-in-symfony-2-jordscream/

相关内容

  • 没有找到相关文章

最新更新