私はこれを過度に複雑にしていると確信していますが、別の方法でそれを行う方法がわかりません。
月の週数をキー、曜日を値とした配列を作成したいと考えています。
この関数を使用して、すべての曜日を取得しています。
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週間を取得しています. 2 月は 4 週間あるので、月が重なる日を保存することはできません。
ここで私は完全に間違っていますか?このタスクを解決するために可能な方法は何ですか?