Как рассчитать количество дней в месяце с учетом даты начала и продолжительности? - PullRequest
3 голосов
/ 12 января 2011

Попытка выяснить небольшую проблему.У меня есть дата начала и продолжительность (в неделях), и мне нужно рассчитать количество рабочих дней в месяце за период.

Например: Дата начала: 2011-02-07 Продолжительность: 10 недель

Я хотел бы получить следующее:

Фев: 16 дней Март: 23дни апрель: 11 дней

Любая помощь будет отличной.Благодарю.

Ответы [ 2 ]

4 голосов
/ 12 января 2011

до 5.3 решение:

$start = $current = strtotime('2011-02-07');
$end = strtotime('+10 weeks', $start);
$months = array();
while($current < $end) {
    $month = date('M', $current);
    if (!isset($months[$month])) {
        $months[$month] = 0;
    }
    $months[$month]++;
    $current = strtotime('+1 weekday', $current);
}
print_r($months);

Выход ( кодовая панель ):

Array
(
    [Feb] => 16
    [Mar] => 23
    [Apr] => 11
)
3 голосов
/ 12 января 2011
$start=date_create('2011-02-07');
$interval=new DateInterval('P10W');
$end=date_add(clone $start,$interval);//use clone otherwise $start gets changed

$period=new DatePeriod($start, new DateInterval('P1D'), $end);

foreach($period as $day){
  if($day->format('N')<6) $workdays[$day->format('F')]++; //N is 1-7 where Monday=1
}

var_dump($workdays);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...