gpt4 book ai didi

php - 关于EDT和时差的一些问题

转载 作者:行者123 更新时间:2023-11-29 18:14:05 32 4
gpt4 key购买 nike

  1. 我的网站简介

我的网站面向韩国(又称大韩民国)的访问者。我的网站的服务器位于美国。PHPMyAdmin 在运行查询 SELECT @@ system_time_zone 时显示 EDT

  • 我的网站的结构
  • 当我今年10月第一次将我的网站上传到该服务器时,我检查了数据库时间。而且和韩国好像有13个小时的时差。因此,我将 3600 * 13 秒添加到数据库时间(不设置时区),如下所示。

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

    我的网站采用上面的 $DbNow 并在各种情况下使用它。例如,在过帐情况下,在 INSERT INTO 查询的日期时间字段中输入 $DbNow,如下所示:

    $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();
  • 问题情况
  • 今年11月的一天,当我写一篇帖子并查看帖子的日期字段(my_datetime)时,我发现与韩国的时差多了一个小时。显然,在10月底,我修正了3600 * 13的时差。然后我确认它与韩国时间相符。然而,11月,有一个小时的时差!

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

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

    2)即使问题解决了,我的数据库中的一些现有数据与韩国时间存在一小时的时差。如果我想选择有时间差的数据,我应该使用什么查询?还要从数据中减去多少才能消除 1 小时的时差?

    最佳答案

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

      PHP:碳

      Javascript:时刻,时刻时区。

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

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

    编辑:

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

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

    关于php - 关于EDT和时差的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47172035/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com