Странное поведение 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? Я делаю что-то неправильно? В случае, если это ошибка, что будет лучшим способом обойти эту проблему?