【问题标题】:why is php timezone is correct on local host, but incorrect after uploading to server?为什么本地主机上的 php 时区是正确的,但上传到服务器后却不正确?
【发布时间】:2012-05-20 05:26:33
【问题描述】:

我正在使用 php 和 mysql。当我将时间值插入本地主机上的 mysql 数据库时,将应用正确的时间。我当时正在使用now() 函数。

当我在我的虚拟主机帐户上将时间值插入 my_sql 数据库时,它显示了错误的时区。

如果来自不同时区的用户发布了某些内容,并且我在我的时区查看它,我该如何设置它,以便显示给用户的时间与用户查看它的位置相关。

$sql1="INSERT INTO notifications (stamp) 
            VALUES (now());

【问题讨论】:

  • 查看你的 php.ini,在那里你可以设置服务器的时区。
  • 服务器在不同的时区!
  • a) 服务器的时区设置为什么? b) php.ini 中设置了哪个时区? c) mysql中设置了什么时区?

标签: php mysql datetime timezone phpmyadmin


【解决方案1】:

您的服务器位于不同的时区。

您可以在 PHP 和 MySQL 中设置时区。

date_default_timezone_set('America/Los_Angeles');

在 MySQL 中:

SET time_zone = 'America/Los_Angeles';

或者,您可以将时间存储为 timestamp 列,在基础数据中始终为 UTC。

【讨论】:

    【解决方案2】:

    来自the documentation for NOW()

    该值以当前时区表示。

    因此,如果您的本地计算机与主机计算机位于不同的时区,您看到不同的结果。

    您可能要考虑改用UTC_TIMESTAMP()。 (我不清楚如果在适当的上下文中使用这是否会返回 DATETIME 值,但这可能就是您想要的。)

    【讨论】:

    • 如果来自不同时区的用户发布了某些内容,而另一个用户在不同的时区查看它,我该如何设置它以便显示给用户的时间与用户所在的位置相关从查看它。会使用 UTC_TIMESTAMP() 做到这一点吗?他们无论如何都要这样做而不强迫用户输入他们所在的时区吗?
    • @arboles:尚不清楚您要达到的目标。你应该写下具体的例子,具体的时间和时区,然后弄清楚如何实现它。
    【解决方案3】:

    您的网络服务器 php.ini 可能设置了不同的时区。

    您可以通过date_default_timezone_set()在您的php文件中更改它

    【讨论】:

      猜你喜欢
      • 2018-01-29
      • 2015-10-01
      • 2014-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 2020-02-21
      • 2018-12-19
      相关资源
      最近更新 更多