PHP - Mysql преобразование даты - PullRequest
2 голосов
/ 22 марта 2012

Я заметил некоторые странные результаты с преобразованием дат между MYSQL и PHP. Пожалуйста, смотрите следующее

PHP: strtotime (25 марта 2012 г.) возвращает 1332626400
Mysql: FROM_UNIXTIME (1332626400) возвращается 2012-03-25 00:00:00
Эти результаты соответствуют ожиданиям.

Проблема:

Php: strtotime (26 марта 2012) возвращает 1332709200
Mysql: FROM_UNIXTIME (1332709200) возвращает 2012-03-25 23: 00: 00

Я ожидаю, что FROM_UNIXTIME вернет "2012-03-26", т.е. (26 марта вместо 25 марта)

Игнорирование следующего времени также не помогает:
FROM_UNIXTIME (1332709200, «% Y-% m-% d») возвращает 2012-03-25

Есть идеи, что здесь происходит?

Ответы [ 3 ]

0 голосов
/ 22 марта 2012

Проверьте date.timezone переменную в вашем PHP.ini. В моем случае (Европа / Будапешт) выбрасывается правильное значение:

$ php -r "echo strtotime('26-Mar-2012');"
1332712800
0 голосов
/ 22 марта 2012

Я попытался следующий запрос на MySQL SELECT FROM_UNIXTIME (1332709200) как время;И он вернул «2012-03-26 02:30:00».Так что похоже на летнее время или часовой пояс на вашем сервере.

0 голосов
/ 22 марта 2012

Возможно, часовые пояса в PHP и ваш сервер MySQL различаются. Разница в вашем результате составляет ровно 1 час, а ваш источник данных - в секундах. Это не может быть совпадением. Похоже на UTC +1 или UTC -1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...