Symfony2和PHP受DST影响,我如何阻止它影响我?

Symfony2和PHP受DST影响,我如何阻止它影响我?,php,sql-server,date,symfony,dst,Php,Sql Server,Date,Symfony,Dst,在我的symfony2项目中,我们需要使用日期和时间存储各种信息。目前在数据库中,我们使用列类型的date存储所有信息。当信息第一次存储在数据库中时,一切都很顺利 问题是,当我使用相同的表单类型修改信息时,在发出mergeusing原则后,数据会发生更改。更糟糕的是,如果我在没有前端的情况下(使用UPDATE命令)修改数据库信息,那么它的存储不会出现任何问题,并且会按原样显示 我在这个问题上做了一些研究,这是因为Symfony在从视图到模型的转换过程中采用了服务器的时区并将其应用于输入数据。PH

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

问题是,当我使用相同的表单类型修改信息时,在发出
merge
using原则后,数据会发生更改。更糟糕的是,如果我在没有前端的情况下(使用
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发生任何变化也不会改变的时区。

我认为您可以在Symfony应用程序中找到多个选项来设置或定义默认时区[问题是我的时区考虑了DST。它考虑的DST是政府随意更改的日期,我们不知道他们何时或是否会更改时间。PHP无法知道这一点,因此系统容易出错。我已经在PHP.ini中设置了时区,因为它应该是不可变的,但DST将其丢弃如果我尝试在其他地方重新声明它是没有用的,因为结果基本上是一样的能够根据政府的决定为应用程序选择有效的时区吗?这是一个好主意,但我找到了另一个解决方案,并已经对其进行了测试。