Intereting Posts
Работа с флажком из массива формы в php синхронизировать базу данных Microsoft Access с базой данных сайта Silverstripe Как передать пользовательские параметры в форму Symfony Глобальные переменные и локальные переменные Алгоритм создания большого файла фиктивных файлов Как удалить определенные поля из всех объектов набора записей в литии? Как вставить строку и игнорировать только UNIQUE ошибки, не используя SELECT Facebook Php SDK – getUser () всегда возвращает 0 WAMP Server ERROR "Запрещено У вас нет разрешения на доступ / phpmyadmin / на этом сервере." Отправить HTML-форму с пустыми флажками set_error_handler Не работает Как я хочу, чтобы он работал CakePHP ACL генерирует разные ссылки для разных групп JQuery autocomplete и PHP: заполнение поля ввода данными из базы данных mySQL на основе выбранной опции в поле автозаполнения Почему вы не должны использовать mysql_fetch_assoc более 1 раза? Symfony 3.1 и OneUpUploaderBundle + Blueimp = UploadListener не вызывается

PHP strtotime () «первый понедельник февраля» возвращается во второй понедельник, если 1 февраля – понедельник

Я работаю над функцией PHP, которая вычисляет праздники:

function holidays($country = 1, $timespan_start = 0, $timespan_end = 0) 

Праздники возвращаются как временные метки в массиве.

Поскольку я должен рассчитать даты, как в первый понедельник февраля, я попробовал strtotime("first monday february $year") и я обнаружил, что это не работает в 2010 году, поскольку 02/01/2010 – понедельник – я получаю 8 февраля.

Эта ошибка на самом деле упоминается в журнале изменений: на PHP 5 до 5.2.7 запрос на заданное вхождение данного дня недели в месяц, когда этот день недели был первым днем ​​месяца, неправильно добавит одну неделю к возвращенной отметке времени. Это было исправлено в 5.2.7 и более поздних версиях.

Но я использую PHP 5.3.8. Почему я испытываю эту ошибку?

Related of "PHP strtotime () «первый понедельник февраля» возвращается во второй понедельник, если 1 февраля – понедельник"

Похоже, вы просто пропустили «из»:

 echo date('Ym-d', strtotime('first monday of february 2010')); 

даст ожидаемый результат . См. Руководство по PHP в отношении относительных дат для различных форматов ввода.

В зависимости от вашей версии PHP оператор 'of' может работать или не работать. В качестве другого решения попробуйте:

echo date('Ym-d',strtotime('monday February 2010'));

вернется в первое воскресенье февраля 2010 года. Работает и на все дни.