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

我想将周期细分为几个月。

我怎么知道;

  1. 开始月份有多少天?
  2. 开始月份的最后一天是几号?
  3. 开始日期和月底之间有多少天?

感谢 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;