Это намного проще, чем вы думаете, используя strtotime
. Я верю, что последние несколько - это то, что вам нужно. Вы должны быть осторожны, хотя некоторые недели в отдельные дни могут не иметь определенного дня. Например, 1-я неделя 16 ноября не имеет понедельника.
<?php
echo date("Y-m-d",strtotime('first monday September 2016'));
// 2016-09-05 (first Monday of september '16)
echo date("Y-m-d",strtotime('Tuesday +1 week December 2016'));
// 2016-12-06 (first Tuesday of December '16)
echo date("Y-m-d",strtotime('Friday November 2016'));
// 2016-11-04 (first Friday of November '16')
echo date("Y-m-d",strtotime('fourth Monday September 2016'));
// 2016-09-05 (first Monday of september '16)
echo date("Y-m-d",strtotime('Tuesday December 2016'));
// 2016-12-06 (first Tuesday of December '16)
echo date("Y-m-d",strtotime('third Friday November 2016'));
// 2016-11-04 (first Friday of November '16')
echo date("Y-m-d",strtotime('Tuesday +1 week December 2016'));
// 2016-12-06 (Tuesday of the second week of December '16)
echo date("Y-m-d",strtotime('Friday +2 week November 2016'));
// 2016-11-04 (Friday of the third week of November '16')
?>
Без «+ п» в неделю последние 2 примера, это будет возвращать первый соответствующий день в течение первой недели. Добавление +1 week
делает вторую неделю, на которую он выбирает день. Добавление +2 week
делает его третьей неделей, которую он выбирает, и т. Д.
Но, как я уже упоминал выше, он не является надежным. Например:
echo date("Y-m-d",strtotime('Friday +4 week November 2016'))
// 2016-12-02 Although there are 5 calendar weeks in November '16, the 5th
// week does not have a Friday. So you're getting December's Friday, because
// you're simply adding weeks to a day.
Ваш ответ верный. Но мне нужна ясность 5-9-2016 => Понедельник - первая неделя месяца или нет. Пожалуйста, помогите мне из этого. –
См. Edit. особенно последние несколько примеров –
После вашего ответа я пробую эту дату («Y-m-d», strtotime («первый понедельник, сентябрь 2016 года»)); и получить «2016-09-05» Но нужна ясность - это первая неделя сентября месяца.? и этот понедельник - первый день недели сентябрьского месяца.? Пожалуйста, помогите мне. –