我很确定我过于复杂了,但 atm 我不知道如何以另一种方式做到这一点。
我想创建一个数组,其中包含一个月中的周数作为键,本周的天数作为值。
我正在使用这个函数来获取一周中的所有天数:
public function getDaysOfWeek($year, $month, $day)
{
$firstMondayThisWeek = new DateTime($year . '/' . $month . '/' . $day, new DateTimeZone("Europe/Berlin"));
$firstMondayThisWeek->modify('tomorrow');
$firstMondayThisWeek->modify('last Monday');
$nextSevenDays = new DatePeriod(
$firstMondayThisWeek,
DateInterval::createFromDateString('+1 day'),
6
);
return $nextSevenDays;
}
这个函数来构建数组:
public function getWeekAndDays($year, $month)
{
$weeksInMonth = Carbon::createFromDate($year, $month)->endOfMonth()->weekOfMonth;
$weekBegin = Carbon::createFromDate($year, $month)->startOfMonth();
$weeks = [];
for($i=1; $i<=$weeksInMonth; $i++)
{
$collection = new \stdClass();
$collection->week = $i;
$collection->days = $this->getDaysOfWeek($year, $month, $weekBegin->day);
$weekBegin->addWeek(0);
$weeks[] = $collection;
}
return $weeks;
}
除了 2 月以外的所有月份,我都有 5 周的时间。二月份我有 4 周的时间,所以我无法保存月份重叠的日子。
我在这里完全错了吗?解决此任务的可能方法是什么?