在我的数据库中,我有记录:'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',为什么!?
答案 0 :(得分:1)
我解决了我的问题:
SELECT UNIX_TIMESTAMP(my_timestamp_column) + TIMESTAMPDIFF(second, UTC_TIMESTAMP(), NOW())
FROM my_table
WHERE my_id_column = my_id
答案 1 :(得分:0)
我怀疑他们被设置为不同的时区。
将MySQL时间与PHP系统时间进行比较:
SELECT NOW();
VS。
<?php
$date = date('Y-m-d H:i:s');
echo $date;
他们可能会休息两小时。
答案 2 :(得分:0)
我打赌你将时间戳转换回PHP中的日期。
查看时间戳的差异:1359056408
- 1359045608
= 10800
。
现在除以60
秒/分钟和60
分钟/小时:
10800 / 60 = 180
180 / 60 = 3
这意味着您所处的时区距离UTC时间3小时。 您应该使用可以生成UTC时间戳的函数或(如果是这种情况)您应该使用“知晓”或不受时间局部问题影响的日期时间存储格式。
答案 3 :(得分:0)
如果您在数据库中使用GMT,可以通过设置将php设置为使用相同的时区
php中的date.timezone
请参阅date.timezone这种方式strtotime
应该使用指定的时区。