gmmktime()
предполагает, что введенная дата / время является временем по Гринвичу, и автоматически преобразует его в время сервера, используя настройку date.timezone в php.ini.В моей системе +0500 по Гринвичу я получаю:
<?php
$inputDate = gmmktime(0, 0, 0, 2, 7, 2012);
echo date("M d Y H:i:s O", $inputDate);
// Feb 07 2012 05:00:00 +0500
Обратите внимание, что я передал 0, 0, 0
как время функции, но в итоге получил 05:00:00
.В вашем случае кажется, что ваш сервер отстает GMT, поэтому для каждой даты, которую вы создаете с помощью этой функции, будет конвертировано в -nnnn часов после указанной даты;для 00:00 по Гринвичу в качестве ввода это фактически означает, что вы получите предыдущую дату.
Обходной путь прост, используйте функцию gmdate()
для отображения дат, созданных с помощью gmmktime()
:
<?php
$inputDate = gmmktime(0,0,0,2,7,2012);
echo gmdate("M d Y H:i:s O", $inputDate);
// Feb 07 2012 00:00:00 +0000