PHP - Mysql日期转换

时间:2012-03-22 10:16:44

标签: php mysql date

我注意到MYSQL和PHP之间的日期转换有些奇怪的结果。 请参阅以下

PHP:strtotime(2012年3月25日)返回1332626400
Mysql:FROM_UNIXTIME(1332626400)返回2012-03-25 00:00:00
结果如预期。

问题:

Php:strtotime(2012年3月26日)返回1332709200
Mysql:FROM_UNIXTIME(1332709200)返回2012-03-25 23:00:00

我希望FROM_UNIXTIME返回“2012-03-26”即(3月26日而不是3月25日)

如下忽略时间也无济于事:
FROM_UNIXTIME(1332709200,'%Y-%m-%d')返回2012-03-25

知道这里发生了什么吗?

3 个答案:

答案 0 :(得分:0)

可能PHP和MySQL服务器中的时区不同。结果的差异恰好是1小时,您的数据源是以秒为单位。这不可能是巧合。似乎是UTC +1或UTC -1

答案 1 :(得分:0)

检查PHP.ini中的date.timezone变量。就我而言(欧洲/布达佩斯),它会抛出正确的值:

$ php -r "echo strtotime('26-Mar-2012');"
1332712800

答案 2 :(得分:0)

我在mysql上尝试了以下查询     SELECT FROM_UNIXTIME(1332709200)AS时间; 它返回'2012-03-26 02:30:00'。 因此,它似乎与您的服务器上的夏令时或时区有关。