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