sqlserver-Symfony2和PHP受到DST的影响,我如何阻止它影响我


sql server - Symfony2 and PHP affected by DST, how do I stop this from affecting me?

在我的Symfony 2项目中,我们需要使用日期和时间存储各种信息。目前,在数据库中,我们使用列类型的date存储所有这些信息。当信息第一次存储在数据库中时,一切都很顺利。

问题是,当我使用相同的表单类型修改信息时,在使用条令发布merge后,数据会被更改。更糟糕的是,如果我在没有前端的情况下(使用UPDATE命令(修改数据库信息,那么它的存储就不会出现任何问题,并且它会按原样显示

我对这个问题进行了一些研究,这是因为Symfony在从视图到模型的转换过程中采用了服务器的时区并将其应用于输入数据。PHP通常考虑DST,但由于政治问题,PHP没有采用正确的DST结束日期(它本应在3月结束,但在4月结束,PHP采用原始的3月日期(,因此数据会相应地更改。

我应该怎么做才能避免这个问题进一步发生?在我的国家,DST在过去几年里一直有一些变化,我不能相信我的电脑会准确地显示日期。我想让它不受时区限制。

  • 我应该如何在数据库中存储我的日期
  • 我应该如何管理Symfony项目中的日期

事先谢谢。

为了拥有一个不可变的PHP时区,请始终在PHP.ini中使用UTC:

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone=UTC

这将迫使PHP有一个时区,尽管DST发生了任何变化,但它永远不会改变。