PHP 在 X 日期和 X 日期之间分成几个月的时间段
PHP Between X date and X Date break into periods of months
进行报告:
用户输入 2 个日期:E.G start:04-03-12 结束:15-06-12
$ROStartDateTimestamp = strtotime('04-03-12');
$ROStartDate = date('d/m/Y', $ROStartDateTimestamp);
$ROEndDateTimestamp = strtotime('15-06-12');
$ROEndDate = date('d/m/Y', $ROEndDateTimestamp);
我想将周期细分为几个月。
我怎么知道;
- 开始月份有多少天?
- 开始月份的最后一天是几号?
- 开始日期和月底之间有多少天?
感谢 Heep 的 :)
您可以循环它并创建一个数组,稍后可以与计数或 array_sum 一起使用。
我创建了一个多维数组,包含开始和结束之间的所有日期的年月日。
$start = strtotime('04-03-12');
$end = strtotime('15-06-12');
For($i = $start; $i<=$end;){
List($y, $m, $d) = explode(" ", date("Y m d", $i));
$arr[$y][$m][$d] = 1;
$i += 86400;
}
Var_dump($arr);
同样的事情也可以用 DateTime 完成,但它通常使用起来更重,这就是我使用 strtotime 的原因。
https://3v4l.org/1m8aM
$ROStartDateTimestamp = strtotime('04-03-12');
$ROStartDate = date('d/m/Y', $ROStartDateTimestamp);
$ROEndDateTimestamp = strtotime('15-06-12');
$ROEndDate = date('d/m/Y', $ROEndDateTimestamp);
//To find month in start date:
$ROMonthofStartDate = date('m',$ROStartDateTimestamp);
//To find year in start date:
$ROYearofStartDate = date('Y',$ROStartDateTimestamp);
//To find number of days in a month:
$numDaysInMonthofStartDate=cal_days_in_month(CAL_GREGORIAN,$ROMonthofStartDate,$ROYearofStartDate);
//To find last date of month:
$lastDateInMonthofStartDate=date('Y-m-t',$ROStartDateTimestamp);
$lastDateTimestamp = strtotime($lastDateInMonthofStartDate);
//To find number of days from start date to the end of month:
$numDaysFromStartToEndDate = round( ($lastDateTimestamp-$ROStartDateTimestamp) / (60 * 60 * 24));
echo $numDaysFromStartToEndDate;
进行报告:
用户输入 2 个日期:E.G start:04-03-12 结束:15-06-12
$ROStartDateTimestamp = strtotime('04-03-12');
$ROStartDate = date('d/m/Y', $ROStartDateTimestamp);
$ROEndDateTimestamp = strtotime('15-06-12');
$ROEndDate = date('d/m/Y', $ROEndDateTimestamp);
我想将周期细分为几个月。
我怎么知道;
- 开始月份有多少天?
- 开始月份的最后一天是几号?
- 开始日期和月底之间有多少天?
感谢 Heep 的 :)
您可以循环它并创建一个数组,稍后可以与计数或 array_sum 一起使用。
我创建了一个多维数组,包含开始和结束之间的所有日期的年月日。
$start = strtotime('04-03-12');
$end = strtotime('15-06-12');
For($i = $start; $i<=$end;){
List($y, $m, $d) = explode(" ", date("Y m d", $i));
$arr[$y][$m][$d] = 1;
$i += 86400;
}
Var_dump($arr);
同样的事情也可以用 DateTime 完成,但它通常使用起来更重,这就是我使用 strtotime 的原因。
https://3v4l.org/1m8aM
$ROStartDateTimestamp = strtotime('04-03-12');
$ROStartDate = date('d/m/Y', $ROStartDateTimestamp);
$ROEndDateTimestamp = strtotime('15-06-12');
$ROEndDate = date('d/m/Y', $ROEndDateTimestamp);
//To find month in start date:
$ROMonthofStartDate = date('m',$ROStartDateTimestamp);
//To find year in start date:
$ROYearofStartDate = date('Y',$ROStartDateTimestamp);
//To find number of days in a month:
$numDaysInMonthofStartDate=cal_days_in_month(CAL_GREGORIAN,$ROMonthofStartDate,$ROYearofStartDate);
//To find last date of month:
$lastDateInMonthofStartDate=date('Y-m-t',$ROStartDateTimestamp);
$lastDateTimestamp = strtotime($lastDateInMonthofStartDate);
//To find number of days from start date to the end of month:
$numDaysFromStartToEndDate = round( ($lastDateTimestamp-$ROStartDateTimestamp) / (60 * 60 * 24));
echo $numDaysFromStartToEndDate;