#php #время
Сразу приведу пример кода: $time1 = strtotime('+1 week'); $time2 = time() + 3600*24*7; var_dump($time1); var_dump($time2); echo PHP_EOL; var_dump(date('Y-m-d H:i:s', $time1)); var_dump(date('Y-m-d H:i:s', $time2)); Вот полученные результаты: int(1459164441) int(1459168041) string(19) "2016-03-28 12:27:21" string(19) "2016-03-28 13:27:21" Т.е. разница ровно час. Случайно наткнулся, проверял чего тест стал падать, там дата проверялась. Интересно, что вчера и позавчера, неделю и месяц назад возвращаемое время было абсолютно одинаковым! UPD: Временная зона установлена "Europe/London".
Ответы
Ответ 1
В ночь с субботы на воскресенье 27 марта часы переводятся на час назад. Временная зона была установлена "Europe/London". Т.к. сегодня стукнуло 21 марта, то через неделю уже будет 28 марта. И соответственно время strtotime('+1 week') уже выдаёт результат с учётом перевода времени на час назад. У нас в Беларуси уже отменили перевод на летнее/зимнее время. В России тоже. На временной зоне "Europe/Minsk" и "Europe/Moscow" возвращаемое время одинаковое в обоих случаях. $time1 = strtotime('+1 week'); $time2 = time() + 3600*24*7; В общем, проблема различий во времени связана с переводом времени на час для указанной временной зоны "Europe/London". Функция strtotime учитывает часовой пояс, а time - нет, возвращает unix-timestamp.
Комментариев нет:
Отправить комментарий