关于EDT和时差的一些问题

土星
  1. 我的网站简介

我的网站面向韩国(又名大韩民国)的访问者。我的网站的服务器在美国。并且 PHPMyAdminEDT在运行查询时显示SELECT @@ system_time_zone

  1. 我的网站结构

今年10月我第一次将我的网站上传到这台服务器时,我检查了DB时间。而且好像和韩国有13个小时的时差。因此,我将3600 * 13添加到 DB 时间(不设置时区)如下。

const Offset = 3600 * 13;
$SelectNow = $PDO->prepare('SELECT DATE_ADD(NOW(), INTERVAL '.Offset.' SECOND)');
$SelectNow->execute() or exit;
$DbNow = $SelectNow->fetchColumn();

我的网站$DbNow如上所述并在各种情况下使用它。比如在发帖的情况下,$DbNowINSERT INTO查询的datetime字段中输入如下:

$WriteNote = $PDO->prepare('INSERT INTO table_note(my_datetime, my_contents) VALUES("'.$DbNow.'", :my_contents)');
$WriteNote->bindValue(':my_contents', $my_contents, PDO::PARAM_STR);
$WriteNote->execute();
  1. 问题情况

今年11月的一天,当我写了一篇文章并查看了文章的日期字段(my_datetime)时,我与韩国多了一个小时的时差。显然,在 10 月底,我更正了3600 * 13. 然后我确认它与韩国时间相符。然而,十一月,有一个小时的时差!

  1. 猜原因

似乎美国夏令时正在应用于我网站的数据库服务器。我猜对了吗?

  1. 我的问题

1)如何从根本上解决这个时差问题?将数据库时间转换为 是否正确KST或者它是转换为UTC然后添加3600 * x的正确方法UTC

2)即使问题解决了,我数据库中的一些现有数据与韩国时间还有一小时的时差。如果我想选择具有时差的数据,我使用什么查询?以及从数据中增加或减去多少以消除 1 小时的时差?

拉菲
  1. 使用 UTC 在数据库中存储时间。
  2. 更改您的查询以插入 UTC 日期时间。
  3. 使用外部库将 UTC 转换为各自的时区。(以下是我的个人建议。)可能是最好的。

    PHP : 碳

    Javascript:时刻,时刻时区。

  4. 不,它需要数据库服务器所在的时区。

  5. 很少手动验证,或创建一个作业来更改 UTC 中的所有日期。

编辑:

http://carbon.nesbot.com/docs/

我的意思是您可以创建一个脚本并使用 cron 作业运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章