PHP: узнайте, находится ли день в последнюю неделю месяца - PullRequest
2 голосов
/ 01 августа 2011

Клиент хочет, чтобы информационный бюллетень генерировался автоматически каждый понедельник, показывая расписание на предстоящую неделю. Это просто:

if(date('N', $time)==1) { /* Stuff */ }

Прикрепите это к crontab, работающему ночью, и я готов к работе.

Однако, если новостная рассылка создается в последнюю неделю месяца, она должна показывать расписание на предстоящий месяц. Как бы я определил, когда нужно составить месячный график?

Ответы [ 5 ]

5 голосов
/ 01 августа 2011
date('m') == date('m', strtotime('+1 week'))

Если месяц недели с даты запуска отчета отличается от текущего месяца, покажите отчет!

0 голосов
/ 20 июня 2017

Я знаю, что ответили, но это поможет больше:

Встроенные функции времени PHP делают это даже простым. http://php.net/manual/en/function.strtotime.php

// Get first Friday of next month.
$timestamp = strtotime('first fri of next month');

// Get second to last Friday of the current month.
$timestamp = strtotime('last fri of this month -7 days');

// Format a timestamp as a human-meaningful string.
$formattedDate = date('F j, Y', strtotime('first wed of last month'));
0 голосов
/ 01 августа 2011

Вы можете использовать параметр формата даты t, чтобы увидеть, сколько дней в конкретном месяце. Попробуйте

if ((date('t', $time) - date('j', $time)) > 6) {
    // in the last week of the month
}
0 голосов
/ 01 августа 2011

Одним из способов может быть поиск следующего понедельника в другом месяце.

if (date('n', $time) != date('n', $time + 7*24*60*60)) { ... }

Вы можете быть более любопытным, но это похоже на ваш существующий код.

0 голосов
/ 01 августа 2011
if(date('n', $time) !== date('n', $time+518400)){
    // Six days from now it will be a new month
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...