php - 时间戳、时区和夏令时

标签 php mysql datetime dst

我有一个相当大的中央 MySQL 数据库。到目前为止,我一直使用 unix 时间戳来存储日期/时间。

直到几个月前,这一切都运行良好,突然从数据库检索到的大量数据丢失了。我检查了数据库,一切都在那里,没有改变。

我创建的应用程序精确到秒,当夏令时开始时,我的应用程序延迟了 3599 秒(一小时 3600 秒)

我正在尝试了解时区/夏令时等,并努力理解这些概念!!

我的所有 PHP 文件都设置为欧洲/伦敦时区。我的数据库中的所有日期、时间等都存储为 unix 时间戳(整数)。

我应该将所有时间戳转换为 datetime() 字段类型吗?或者有没有办法避免夏令时?如果我切换到 UTC,我需要调整任何时间戳吗?

非常感谢任何建议。

最佳答案

您可以保持数据库中的 UNIX 时间戳不变。

您的应用程序正在将检索到的时间更改为服务器时间(在您的情况下为欧洲/伦敦),如您所知,它实现了 DST。

将您的服务器设置为 UTC 并开始使用 DateTime类以避免将来出现这些问题。

另外请确保设置您的 default timezone to UTC in php.ini

关于php - 时间戳、时区和夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18335730/

相关文章:

php - 将 SQL where CASE 查询转换为 Yii2 Active Record

r - 如何展平/合并重叠的时间段

php - 几个页面布局问题

php - Nginx 重写或内部重定向循环,同时内部重定向到 "/index.html"

mysql - 在第一次选择的基础上进行第二次选择

php - 日期范围的 If 语句

javascript - Sequelize 如何比较查询中日期的年份

javascript - 在 JavaScript 中,如何将日期时间值从一种格式转换为另一种格式?

php 和 mysql 查询以获取最近 12 个月的日期

php - 如果 PHP 中的页面处于事件状态,则使用 foreach 显示事件类