【问题标题】:Joomla timezone different from MySQL timezoneJoomla 时区与 MySQL 时区不同
【发布时间】:2011-06-23 17:35:13
【问题描述】:

在 Joomla 中,我已正确地将我的时区设置为东部时间。我正在使用 xampp 在本地运行我的服务器。我可以在我的 php.ini 中看到我的 date.timezone 设置为 America/New_York,也是东部时间。但是,不知何故,每当在 Joomla 中修改任何内容时,数据库中出现的修改时间都会提前 5 小时。

【问题讨论】:

    标签: php mysql joomla xampp


    【解决方案1】:

    我不深入了解 Joomla,但这看起来像是 by design

    时间偏移:标识网站运行的时区。在网站位置和 UTC(世界协调时间 - 以前称为 GMT(格林威治标准时间))之间的时间偏移以小时 +/- 设置。从下拉列表中选择时区。

    Joomla 似乎在内部存储 UTC 日期,并在输出数据时计算差异。因此,除非在 前端 中可见错误的日期,否则我认为这很好。

    【讨论】:

    • 这不好,因为它会导致不正确的行为。如果我在数据库中的记录都有错误的时间,我不能根据当前时间做事。例如,我正在使用 AutoArchive 插件,它会自动查找过期的文章并将它们移至垃圾箱。但是 joomla 的过期日期比数据库中的过期日期晚了 5 小时
    • @JPC 我明白了。但如果我是正确的,他们没有 incorrect 时间,他们有 GMT/UTC 时间。您必须将当前时间重新计算为 UTC,这很容易,例如与Datetime$date = new DateTime(null, new DateTimeZone('UTC')); 一起工作。但是,似乎在 Joomla 的某个地方设置了“内部时区”——很难从网络结果中分辨出来。也许值得研究一下配置。请记住在更改任何内容之前进行数据库备份
    • 配置中有一个偏移,但我认为它与全局配置中的时区相关联,因此当您修改一个时,它会更改另一个,除此之外,找不到任何东西
    • 如果将UTC中的日期存储在日期设置与UTC不同的MySQL中,那么它仍然是不正确的时间
    【解决方案2】:

    您的 MySQL 时区可能已关闭。每当您的脚本调用像 NOW() 这样的 MySQL 日期/时间函数时,它将使用 MySQL 时间。您可以通过运行此查询SELECT @@global.time_zone, @@session.time_zone; 查看当前时区的设置。

    Read more about it here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 2014-08-05
      • 2019-06-14
      • 2020-02-16
      • 2017-05-02
      相关资源
      最近更新 更多