ISO формат даты в неправильный день

Короткий вопрос, но я не могу понять это. Этот кусок кода:

$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 для часового пояса, но это не должно повлиять на день, по моему мнению.

0

Решение

Сначала я посмотрел, что 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) );
?>
1

Другие решения

strtotime проанализирует вашу строку даты, используя предоставленный часовой пояс или используя часовой пояс по умолчанию если не указано Из кода, который вы опубликовали, мы не можем видеть, на какой часовой пояс настроен ваш сервер, но как только дата будет проанализирована и преобразована в ваш часовой пояс, время может законно наступить в предыдущий день, поэтому вы видите 'Mon',

Либо укажите часовой пояс в strtotime позвонить через now аргумент или установить один глобально с date_default_timezone_set.

1

По вопросам рекламы [email protected]