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

Я столкнулся с каким-то странным поведением функции 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('Ym-d') . "\n"; $thisWeekMonday = strtotime('monday this week', $sunday->getTimestamp()); $thisWeekSunday = strtotime('sunday this week', $sunday->getTimestamp()); echo "This week's Monday: " . date('Ym-d', $thisWeekMonday) . "\n"; echo "This week's Sunday: " . date('Ym-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? Я делаю что-то неправильно? В случае, если это ошибка, какой был бы лучший способ решить эту проблему?

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