Короткий вопрос, но я не могу понять это. Этот кусок кода:
$date = '2015-12-08T00:00:00+01:00';
echo date('D', strtotime($date));
возвращается понедельник
$date = '2015-12-08T00:00:00';
echo date('D', strtotime($date));
возвращает вт. Это почему? +01: 00 для часового пояса, но это не должно повлиять на день, по моему мнению.
Сначала я посмотрел, что 08-12-2015 на самом деле Tuesday
Итак, теперь мы знаем, что первое неверно.
РНР date()
является меткой времени Unix в соответствии с их собственными документами.
Я считаю, что добавление +1 в качестве часового пояса запускает вычисление в +0 часового пояса (UTC) при запросе дня недели и, следовательно, возвращает 23:00 в понедельник в качестве текущего времени UTC.
Вы можете указать часовой пояс перед выполнением остальной части кода: date_default_timezone_set('Europe/Amsterdam');
<?php
date_default_timezone_set('Europe/Amsterdam'); //this is an example of a +1 timezone, choose one from http://php.net/manual/en/timezones.php
$date = '2015-12-08T00:00:00+01:00';
echo date('D', strtotime($date) );
?>
strtotime
проанализирует вашу строку даты, используя предоставленный часовой пояс или используя часовой пояс по умолчанию если не указано Из кода, который вы опубликовали, мы не можем видеть, на какой часовой пояс настроен ваш сервер, но как только дата будет проанализирована и преобразована в ваш часовой пояс, время может законно наступить в предыдущий день, поэтому вы видите 'Mon'
,
Либо укажите часовой пояс в strtotime
позвонить через now
аргумент или установить один глобально с date_default_timezone_set
.