【问题标题】:Converting a MySQL database row time timezone转换 MySQL 数据库行时区
【发布时间】:2013-07-31 20:58:34
【问题描述】:

所以我意外地做了一些复杂得可笑的事情,因为我认为如果 MySQL 中的每个数据库在同一个帐户上,你就不能有单独的时区?

基本上我的大部分数据库都是为美国用户服务的,并且使用美国的时区之一,然后我还经营一个英文博客。

我的问题是英文博客的日期时间行中插入了正确的 BST (GMT+1) 值,但它位于使用 MDT 时区的数据库中。

然后我需要使用以下方法来获取 rss 提要的时间:

$date = date('r', $data['date']); //MDT system but $data['date'] is GMT+1

但是由于时区不正确,这给了我在博客发布时的未来时间。

有没有办法可以将 BST 转换为 MDT?

但它变得更加复杂,因为在英格兰一年中的某些月份我们使用 GMT (GMT+0) 而不是 BST (GMT+1) ... 无论如何可以确定在英格兰使用哪个时区一年中的时间并进行转换,还是我只是让整个事情变得过于复杂?

【问题讨论】:

  • 最简单的方法是以UTC存储所有时间,并在显示时仅显示在相关时区。这样您就可以根据需要在多个时区中显示,并且在数据库中始终有一个参考时间,很容易转换为任何 TZ
  • @Anigel 问题是我现在有 6 年以上的数据,所以改变它不是很容易
  • 这里的答案可能对stackoverflow.com/questions/13698779/…有帮助

标签: php date timezone


【解决方案1】:

以下解决方案完美运行:

$oldDate = date('l F j Y H:i:s', $link['date']);
$date = new DateTime($oldDate, new DateTimeZone('Europe/London'));
$date->setTimezone(new DateTimeZone('UTC'));
echo $date->format('r');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 2020-06-16
    • 2018-05-04
    • 2011-02-01
    • 2012-05-08
    相关资源
    最近更新 更多