Javascript 如何在php中动态计算特定日期范围内每个月的天数

Javascript 如何在php中动态计算特定日期范围内每个月的天数,javascript,php,jquery,html,css,Javascript,Php,Jquery,Html,Css,我想首先感谢你花时间解决我的问题 例如,用户选择的日期范围为2016年12月10日至4月20日。那么我怎样才能得到12月、1月、2月、3月和4月在该范围内的天数呢。即12月=22天,1月=31天,2月=28天,3月=31天,4月=20天 我正在为员工做考勤报告。在考勤报告中,用户将选择获取考勤报告的日期范围 考勤报告视图如下图所示 如上图所示,月数显示在表的第一行,即 但我想在这样的合并列中显示月份数。 请引导我完成这件事。再次感谢您。您可以尝试以下方法: <?php $begi

我想首先感谢你花时间解决我的问题

例如,用户选择的日期范围为2016年12月10日至4月20日。那么我怎样才能得到12月、1月、2月、3月和4月在该范围内的天数呢。即12月=22天,1月=31天,2月=28天,3月=31天,4月=20天

我正在为员工做考勤报告。在考勤报告中,用户将选择获取考勤报告的日期范围

考勤报告视图如下图所示

如上图所示,月数显示在表的第一行,即

但我想在这样的合并列中显示月份数。


请引导我完成这件事。再次感谢您。

您可以尝试以下方法:

<?php
    $begin = new DateTime( '2016-12-10' );
    $end = new DateTime( '2017-04-20' );

    $interval = DateInterval::createFromDateString('1 month');
    $period = new DatePeriod($begin, $interval, $end);
    $i = 0;
    foreach ( $period as $dt ){
        if($i==0){
            $month[$dt->format('M')] = cal_days_in_month(CAL_GREGORIAN, $dt->format('m'), $dt->format('Y')) - $dt->format('d');
        } else {
            $month[$dt->format('M')] = cal_days_in_month(CAL_GREGORIAN, $dt->format('m'), $dt->format('Y'));
        }
        $i++;
    }
    $month[$end->format('M')] = $end->format('d');
    print_r($month);
?>

到目前为止你试过什么?向我们展示您的代码,以便我们可以帮助您。@TomUdding我想根据daterange动态跨越月份标题。您好,您需要尝试一些代码,然后如果您的代码遇到任何问题,我们可以解决。您可以尝试每月计算天数,以获得我知道的给定月份和年份的天数亲爱的。例如,用户选择的日期范围为2016年12月10日至4月20日。那么我怎样才能得到12月、1月、2月、3月和4月在该范围内的天数呢。例如,12月=22天,1月=31天,2月=28天,3月=31天,4月=20天。谢谢,亲爱的,但它只提供4月天数,但我需要日期范围内所有月份的天数。阵列:1[▼ 这是我得到的输出:数组[Dec]=>21[Jan]=>31[Feb]=>28[Mar]=>31[Apr]=>20
<?php
        //Calculating Number of Days Per Month in given daterange.
$begin = new \Carbon\Carbon($start_date);
$end = new \Carbon\Carbon($end_date);
$month = array();
if ($begin->month != $end->month) {
    $interval = \Carbon\CarbonInterval::month();
    $period = new \DatePeriod($begin, $interval, $end);
    $i = 0;
    $month = array();
    foreach ($period as $dt) {
        if ($i == 0) {
            $month[$dt->month] = $dt->daysInMonth + 1 - $dt->day;
        } else {
            $month[$dt->month] = $dt->daysInMonth;
        }
        $i++;
    }
    $month[$end->month] = $end->day;
} else if ($begin->month == $end->month && $begin->diffInDays($end) == 0) {
    $month[$begin->month] = 1;
} else if ($begin->month == $end->month && $begin->diffInDays($end) != 0) {
    $month[$begin->month] = $begin->diffInDays($end) + 1;
}
?>