mirror of
https://github.com/werkraum-media/calendar.git
synced 2024-12-22 04:56:08 +01:00
Fix broken month view if last week of December is in next year (#9)
The cause was using the wrong character in formatting the year. We now switch from `Y` to `o` which will work based on the week instead of date. This is necessary as we provide this year to the week, and therefore need the year of the week, not day. Resolves: #11388
This commit is contained in:
parent
33eb0a2a3b
commit
b087098793
4 changed files with 31 additions and 4 deletions
|
@ -78,7 +78,7 @@ class Month
|
|||
while ($currentDay <= $lastDay) {
|
||||
$this->weeks[] = new Week(
|
||||
(int) $currentDay->format('W'),
|
||||
(int) $currentDay->format('Y')
|
||||
(int) $currentDay->format('o')
|
||||
);
|
||||
|
||||
$currentDay = $currentDay->modify('+7 days');
|
||||
|
|
|
@ -80,7 +80,7 @@ class Week
|
|||
|
||||
return new self(
|
||||
(int) $newDay->format('W'),
|
||||
(int) $newDay->format('Y')
|
||||
(int) $newDay->format('o')
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -90,7 +90,7 @@ class Week
|
|||
|
||||
return new self(
|
||||
(int) $newDay->format('W'),
|
||||
(int) $newDay->format('Y')
|
||||
(int) $newDay->format('o')
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -14,7 +14,12 @@ Nothing
|
|||
Fixes
|
||||
-----
|
||||
|
||||
Nothing
|
||||
* Fix broken month view if last week of December is in next year.
|
||||
|
||||
The cause was using the wrong character in formatting the year.
|
||||
We now switch from `Y` to `o` which will work based on the week instead of date.
|
||||
This is necessary as we provide this year to the week,
|
||||
and therefore need the year of the week, not day.
|
||||
|
||||
Tasks
|
||||
-----
|
||||
|
|
|
@ -138,6 +138,28 @@ class MonthTest extends TestCase
|
|||
self::assertSame('2021-02-28', $result[27]->getDateTimeInstance()->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function returnsWeeksIfLastDecemberWeekIsInNextYear(): void
|
||||
{
|
||||
$subject = new Month(12, 2024);
|
||||
|
||||
$result = $subject->getWeeks();
|
||||
|
||||
self::assertCount(6, $result);
|
||||
|
||||
$week = array_pop($result);
|
||||
$days = $week->getDays();
|
||||
self::assertSame('2024-12-30', $days[0]->getDateTimeInstance()->format('Y-m-d'));
|
||||
self::assertSame('2025-01-05', $days[6]->getDateTimeInstance()->format('Y-m-d'));
|
||||
|
||||
$week = array_pop($result);
|
||||
$days = $week->getDays();
|
||||
self::assertSame('2024-12-23', $days[0]->getDateTimeInstance()->format('Y-m-d'));
|
||||
self::assertSame('2024-12-29', $days[6]->getDateTimeInstance()->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue