дата () возвращающий неправильный день, хотя метка времени корректна!

У меня есть bizzare проблема с php функцией даты.

код:

$numDays = 8;
$date = strtotime('2010-11-06');
for ($i=1; $i<=$numDays; $i++)
{
    $thisDay = date("D, d M Y", $date);
    print ($thisDay.'<br>');
    $date+=86400; // add one day to timestamp
}

результат на моем сервере (локальный хост, окна):

Суббота, 06 ноября 2010

Sun, 07 ноября 2010

Понедельник, 08 ноября 2010

Вторник, 09 ноября 2010

Среда, 10 ноября 2010

Четверг, 11 ноября 2010

Пятница, 12 ноября 2010

Суббота, 13 ноября 2010

Результат на моем веб-сервере (Linux)

Суббота, 06 ноября 2010

*Sun, 07 ноября 2010

Sun, 07 ноября 2010*

Понедельник, 08 ноября 2010

Вторник, 09 ноября 2010

Среда, 10 ноября 2010

Четверг, 11 ноября 2010

Пятница, 12 ноября 2010

Заметьте, как Sun, 07 ноября 2010 появляется дважды на удаленном сервере?? Почему это происходит? кто-либо может объяснить это Поведение?

5
задан Philip Daubmeier 10 April 2010 в 12:53
поделиться

4 ответа

7 ноября 2010 г. - дата перехода на летнее время во многих часовых поясах (но не в Греции, где вы, кажется, находитесь). Из Википедии :

Начиная с 2007 года, большая часть США и Канады соблюдают летнее время со второго воскресенья марта до первого воскресенья ноября, то есть почти две трети года.

В Греции это похоже 31 октября . Какой часовой пояс вы установили на своем компьютере?

8
ответ дан 18 December 2019 в 14:43
поделиться

Хорошей практикой является вычисление времени в формате UTC, а затем преобразование их в требуемый часовой пояс для местоположение пользователя с использованием функций даты и времени PHP:

date_default_timezone_set('UTC');
$timezone = new DateTimeZone('Europe/Athens');
$datetime = new DateTime('now', $timezone);
echo $datetime->format('Y-m-d H:i:s');
2
ответ дан 18 December 2019 в 14:43
поделиться

Запустите ваш код с начальной датой +1 час, а затем -1 час и посмотрите, какие результаты вы получите. Вы получите больше подсказок и, скорее всего, это связано с переходом на летнее время.

Также, как указал Pekka, попробуйте сделать то же самое с датой, установленной на 31 октября, и посмотрите, что получится.

Хороший вопрос.

1
ответ дан 18 December 2019 в 14:43
поделиться

Здесь трудно быть уверенным, но может ли проблема быть вызвана переходом на летнее время в часовом поясе удаленного сервера?

В большинстве стран переход обычно происходит по выходным, а поскольку день продлен на час , это тот случай, когда добавление 86400 секунд к значению времени , а не вернет дату после этого.

2
ответ дан 18 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: