Странное поведение strtotime () при использовании относительных дат («на этой неделе»)

Я столкнулся с каким-то странным поведениемstrtotime() функция при работе с относительными форматами даты.

Я живу в стране, где первый день недели - не воскресенье, а понедельник. Этот факт должен отражаться наstrtotime()выходной.

Проблема в том, что независимо от того, какую локаль я установил (я пыталсяen_US локаль тоже),strtotime() просто странно, и ни понедельник, ни воскресенье не находятся в диапазоне этой недели. Смотрите пример ниже.

Сегодня, 2014-02-02 (или 02.02.2014, если хотите .. какое приятное свидание), воскресенье. Исходя из этого, я попытался получить даты на этой неделе в понедельник и воскресенье. Оба были выключены.

<?php

    setlocale(LC_ALL, 'cs_CZ');

    $sunday = new DateTime('2014-02-02');

    echo '"Today" is Sunday, ' . $sunday->format('Y-m-d') . "\n";

    $thisWeekMonday = strtotime('monday this week', $sunday->getTimestamp());
    $thisWeekSunday = strtotime('sunday this week', $sunday->getTimestamp());
    echo "This week's Monday: " . date('Y-m-d', $thisWeekMonday) . "\n";
    echo "This week's Sunday: " . date('Y-m-d', $thisWeekSunday) . "\n";

?>

Код над выходами:

"Today" is Sunday, 2014-02-02
This week's Monday: 2014-02-03
This week's Sunday: 2014-02-09

Еслиstrtotime() Я подумал, что неделя начинается с воскресенья, и он должен был вернуться 2014-02-02 как «воскресенье на этой неделе», но это не так. Это означает, что согласноstrtotime()Неделя начинается с понедельника. В этом случае «понедельник этой недели» должен вернуться 2014-01-27, но это не так.

Такое поведение нелогично. Это ошибка PHP? Я делаю что-то неправильно? В случае, если это ошибка, что будет лучшим способом обойти эту проблему?

Ответы на вопрос(1)

Ваш ответ на вопрос