【问题标题】:Time differences between mysql and localhost?mysql和localhost之间的时间差异?
【发布时间】:2018-03-29 14:25:21
【问题描述】:

我正在我的计算机上开发一个时钟应用程序。当我单击打卡时,保存在数据库中的时间如果与我计算机上的时间不同。我正在使用 localhost 来开发应用程序。我知道这可能是时区问题。我发现了这个问题:is the time of computer and localhost same?,并按照步骤操作,但没有成功。我正在使用 WampServer 作为 Web 服务器。我浏览了 php.ini 文件并对 date.timezone 设置进行了更改,但没有任何改变。我确实安装了三个版本的 php,并对每个版本进行了更改。我还发现 Wamp 对链接到 php4apache.ini 的 php.ini 文件使用了符号链接,并在链接文件中进行了更改,但仍然没有任何效果。

我尝试按照此处的说明检查 php 和 mysql 中的时间:Date/Time differences between MySql and PHP?。发现mysql设置为SYSTEM,php设置为UTC。 这告诉我我没有正确设置 PHP。所以我的问题是,PHP 中是否还有其他地方可以设置时区? WAMP中是否有设置时区的地方,或者单独在php中完成?

感谢您的帮助。特洛伊

【问题讨论】:

  • 您确定差异是基于时区而不是缺少 NTP 同步吗?它比几分钟大吗?
  • 是的,大约 5 小时的差异,这表明这是一个时区问题。
  • 好的,很高兴知道。然后您应该决定是否要将数据存储在 GMT 中并在您的应用程序中进行转换。毕竟,您如何准确地插入数据?
  • 在我从我的应用程序发送到服务器的 sql 中使用 CURRENT_TIME 函数。
  • 我不确定你对localhost 的意思(它只是“当前机器”的标准别名)但是在同一台机器上运行的两个程序将使用相同的时钟和两个程序在不同机器上运行的不会。无论您尝试做什么,都需要确保只使用一个时钟进行计算。

标签: php mysql


【解决方案1】:

嗯,我找到了解决办法。在将时间发送到数据库之前,我使用 PHP 的日期和时间函数将时间调整为正确的值。不是我希望的解决方案,但它会完成工作,我可以继续这个项目。感谢那些帮助过的人。

【讨论】:

  • 只想发布更新。我找到了问题的解决方案。我忘了提到我正在使用 CakePHP 来开发我的应用程序。我做了一些研究,发现 CakePHP 在其配置中设置了默认时区。去图吧!
【解决方案2】:

通过使用CURRENT_TIME,将使用您的SQL 服务器的时间设置,而不是您写入php.ini 的设置。通过按照How do I set the time zone of MySQL? 中的说明设置时区,您可能会获得正确的值。

请记住,这些应该保持同步:在 PHP 中进行一些计算,在数据库中进行一些计算会增加计算错误的风险。如果你使用 PHP 的 date(或类似函数)everywhere 或 MySQL 的 time 函数,这样更安全

【讨论】:

  • 我按照建议在 MySQL 中设置了时区,但我仍然得到 -5 的时间差。我正在使用 phpMyAdmin 查看数据库,这可能与问题有关吗?另外,使用php date 函数会更好吗?
  • 你是怎么设置的?是否可以使用其他工具检查数据库(以排除 phpMyAdmin 的问题)?
  • 在打卡程序中,我改变了一切以使用 PHP 日期函数。它仍然保存了 5 小时的差异。我目前正在检查我的网络服务器、数据库和 php 上的配置,看看是否能找到任何其他可能导致问题的地方。
猜你喜欢
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
相关资源
最近更新 更多