如果想从2016-01-01开始我的1月份而不是2016-01-02,我该怎么办。
function countDaysForChoosenYears(int $year):int
{
$att = [];
for ($i = 1; $i <= 12; $i++) {
$att[] = cal_days_in_month(CAL_GREGORIAN, $i, $year);
}
$att = array_sum($att);
return $att;
}
$YearMonthDayStructure = [];
$Date = new DateTime('2016-01-01');
for ($i = 1; $i <= countDaysForChoosenYears(2016); $i++) {
$monthName = $Date->format('F');
$yearNumber = $Date->format('Y');
$YearMonthDayStructure[$yearNumber][$monthName][$Date->format('d')] = $Date->add(new DateInterval('P1D'))->format('Y-m-d');
}
print_r($YearMonthDayStructure);
答案 0 :(得分:1)
第一次进入循环时,您将P1D添加到日期中。因此,您的第一个日期最终为1月2日,因为您使用$ Date-&gt; add将P1D添加到该行的1月1日。它不像$ x ++,在使用变量后会发生'++'。它执行添加,然后将添加的P1D的结果提供给$ YearMonthDayStructure值。