-1

在我的数据库中,我有记录:'2013-01-24 16:40:08'

在 PHP 上使用函数strtotime ,我得到了时间戳1359045608

执行查询:

SELECT UNIX_TIMESTAMP(my_timestamp_column) FROM my_table WHERE my_id_column = my_id

我得到时间戳1359056408而不是时间戳1359045608

转换1359056408,我得到'2013-01-24 19:40:08',为什么!?

4

4 回答 4

1

我解决了我的问题:

SELECT UNIX_TIMESTAMP(my_timestamp_column) + TIMESTAMPDIFF(second, UTC_TIMESTAMP(), NOW())
FROM my_table
WHERE my_id_column = my_id
于 2013-01-24T21:03:32.210 回答
0

我敢打赌,您正在将时间戳转换回 PHP 中的日期。

查看时间戳的差异:1359056408- 1359045608= 10800

现在除以60秒/分钟和60分钟/小时:

10800 / 60 = 180
180 / 60 = 3

这意味着您所在的时区与 UTC 时间相差 3 小时。您应该使用可以在 UTC 中生成时间戳的函数,或者(如果是这种情况)您应该使用“感知”或不受时间局部性问题影响的日期时间存储格式。

于 2013-01-24T20:15:38.703 回答
0

如果您在数据库上使用 GMT,您可以通过在 php 中设置来设置 php 使用相同的时区, date.timezone请参见date.timezone这种方式strtotime应该使用指定的时区。

于 2013-01-24T20:33:44.890 回答
0

我怀疑它们设置为不同的时区。

比较你的 MySQL 时间和你的 PHP 系统时间:

  SELECT NOW();

对比

  <?php
      $date = date('Y-m-d H:i:s');
       echo $date;

他们可能会休息 2 小时。

于 2013-01-24T20:13:03.057 回答