68 lines
3.1 KiB
PHP
68 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace App\Service;
|
|
|
|
use DateTimeImmutable;
|
|
|
|
final class FeiertageProvider
|
|
{
|
|
/**
|
|
* @return array<int, array<string, DateTimeImmutable>>
|
|
*/
|
|
public function getFeiertage(): array
|
|
{
|
|
return [
|
|
2024 => [
|
|
'Neujahr' => new DateTimeImmutable('2024-01-01'),
|
|
'Karfreitag' => new DateTimeImmutable('2024-04-18'),
|
|
'Ostermontag' => new DateTimeImmutable('2024-04-21'),
|
|
'Tag der Arbeit' => new DateTimeImmutable('2024-05-01'),
|
|
'Christi Himmelfahrt' => new DateTimeImmutable('2024-05-29'),
|
|
'Pfingstmontag' => new DateTimeImmutable('2024-06-09'),
|
|
'Fronleichnam' => new DateTimeImmutable('2024-06-19'),
|
|
'Tag der Deutschen Einheit' => new DateTimeImmutable('2024-10-03'),
|
|
'Allerheiligen' => new DateTimeImmutable('2024-11-01'),
|
|
'1. Weihnachtsfeiertag' => new DateTimeImmutable('2024-12-25'),
|
|
'2. Weihnachtsfeiertag' => new DateTimeImmutable('2024-12-26'),
|
|
],
|
|
2025 => [
|
|
'Neujahr' => new DateTimeImmutable('2025-01-01'),
|
|
'Karfreitag' => new DateTimeImmutable('2025-04-18'),
|
|
'Ostermontag' => new DateTimeImmutable('2025-04-21'),
|
|
'Tag der Arbeit' => new DateTimeImmutable('2025-05-01'),
|
|
'Christi Himmelfahrt' => new DateTimeImmutable('2025-05-29'),
|
|
'Pfingstmontag' => new DateTimeImmutable('2025-06-09'),
|
|
'Fronleichnam' => new DateTimeImmutable('2025-06-19'),
|
|
'Tag der Deutschen Einheit' => new DateTimeImmutable('2025-10-03'),
|
|
'Allerheiligen' => new DateTimeImmutable('2025-11-01'),
|
|
'1. Weihnachtsfeiertag' => new DateTimeImmutable('2025-12-25'),
|
|
'2. Weihnachtsfeiertag' => new DateTimeImmutable('2025-12-26'),
|
|
],
|
|
2026 => [
|
|
'Neujahr' => new DateTimeImmutable('2026-01-01'),
|
|
'Karfreitag' => new DateTimeImmutable('2026-04-03'),
|
|
'Ostermontag' => new DateTimeImmutable('2026-04-06'),
|
|
'Tag der Arbeit' => new DateTimeImmutable('2026-05-01'),
|
|
'Christi Himmelfahrt' => new DateTimeImmutable('2026-05-14'),
|
|
'Pfingstmontag' => new DateTimeImmutable('2026-05-25'),
|
|
'Fronleichnam' => new DateTimeImmutable('2026-06-04'),
|
|
'Tag der Deutschen Einheit' => new DateTimeImmutable('2026-10-03'),
|
|
'Allerheiligen' => new DateTimeImmutable('2026-11-01'),
|
|
'1. Weihnachtsfeiertag' => new DateTimeImmutable('2026-12-25'),
|
|
'2. Weihnachtsfeiertag' => new DateTimeImmutable('2026-12-26'),
|
|
]
|
|
];
|
|
}
|
|
|
|
public function isFeiertag(DateTimeImmutable $date): bool
|
|
{
|
|
$year = (int)$date->format('Y');
|
|
$feiertage = $this->getFeiertage();
|
|
|
|
return count(array_filter($feiertage[$year], function (DateTimeImmutable $feiertag) use ($date) {
|
|
return $feiertag->format('Y-m-d') === $date->format('Y-m-d');
|
|
})) > 0;
|
|
}
|
|
}
|
|
|