如何计算开始日期和持续时间的每月天数?

时间:2011-01-12 15:25:03

标签: php datetime codeigniter

试图找出一个小问题。我有一个开始日期和持续时间(以周为单位),需要计算持续时间内每月的工作日数。

例如: 开始日期:2011-02-07 持续时间:10周

我想取回以下内容:

2月:16天 3月:23天 四月:11天

任何帮助都会很棒。谢谢。

2 个答案:

答案 0 :(得分:4)

Pre 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);

输出(codepad):

Array
(
    [Feb] => 16
    [Mar] => 23
    [Apr] => 11
)

答案 1 :(得分:3)

$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);