【问题标题】:php Compare datetime with hours variationphp比较日期时间和小时变化
【发布时间】:2014-12-27 15:22:48
【问题描述】:

我有两个 DateTime,一个在数据库中,采用相同的 php DateTime 格式:Y-m-d H:i:s。一个存储在数据库中,一个被检索。

很遗憾,第二个无法准确比较,因为存在一定的时间(小时)差异。它应该是完全相同的时间,但由于发布/更新日期只是很短的时间(小时、分钟、秒),所以知道比较必须更接近现在,因此差异使得很难进行 DateTime 比较。

示例:数据库:1999-09-06 07:00:00,检索:1999-09-06 09:00:00

我不久前存储了来自远程网站的日期时间。几个月前它有效,但当我今天尝试做同样的事情时,它失败了。

【问题讨论】:

  • 请阅读:dev.mysql.com/doc/refman/5.5/en/datetime.html - 并查找时区
  • 与数据库问题无关,因为我是直接放取的。它与文本文件中的 a 相同。
  • 我没有说这是数据库的问题,我只是想找出实际问题出在哪里,只是想让您了解Mysql如何处理日期和时间值的持久性。你能说出这些值有哪个时区吗:1.)在数据库中,2.)在数据库连接中,3.)哪个时区是运行的数据库服务器,4.)哪个时区是你执行 PHP 运行的 Web 服务器, 5.) 您在 php.ini 中设置的默认时区,6.) 您在 PHP 脚本中设置的默认时区和 7.) 比较时您使用的时区。 (呸!)
  • 另外请发布一些代码,您如何从数据库中检索日期时间值,也许还可以发布一个屏幕截图,演示您如何检查数据库中的值(例如,如果您使用的是命令行 mysql 客户端或 phpmyadmin)(可能比我在之前的评论中要求的更容易)。

标签: php datetime


【解决方案1】:

看起来网络服务器的时区与您的本地时间不同。您可以手动设置 DateTime 类的时区。 http://php.net/manual/de/datetime.settimezone.php

【讨论】:

    【解决方案2】:

    如果时间差始终相同,您可以在比较之前简单地更改一个值。在 PHP 中,您可以使用 strtotime() 减去 2 小时轻松地做到这一点。使用SELECT date_column + INTERVAL 2 HOURhttp://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add

    可以在 MySQL(或任何其他数据库系统)中完成相同的操作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多