diff --git a/src/Countries/Denmark.php b/src/Countries/Denmark.php new file mode 100644 index 00000000..3c8a6976 --- /dev/null +++ b/src/Countries/Denmark.php @@ -0,0 +1,47 @@ + */ + protected function allHolidays(int $year): array + { + return array_merge([ + 'Nytår' => '01-01', + 'Juleaften' => '12-24', + 'Juledag' => '12-25', + 'Anden Juledag' => '12-26' + ], $this->variableHolidays($year)); + } + + /** @return array */ + protected function variableHolidays(int $year): array + { + $easter = CarbonImmutable::createFromTimestamp(easter_date($year)) + ->setTimezone('Europe/Copenhagen'); + + $holidays = [ + 'Påskedag' => $easter->addDay(), + 'Skærtorsdag' => $easter->subDays(3), + 'Langfredag' => $easter->subDays(2), + 'Anden Påskedag' => $easter->addDays(2), + 'Kristi Himmelfartsdag' => $easter->addDays(39), + 'Pinse' => $easter->addDays(49), + 'Anden Pinsedag' => $easter->addDays(50), + ]; + + if ($year < 2024) { + $holidays['Store Bededag'] = $easter->addDays(26); + } + + return $holidays; + } +} diff --git a/tests/.pest/snapshots/Countries/DenmarkTest/it_can_calculate_danish_holidays.snap b/tests/.pest/snapshots/Countries/DenmarkTest/it_can_calculate_danish_holidays.snap new file mode 100644 index 00000000..b19f23c2 --- /dev/null +++ b/tests/.pest/snapshots/Countries/DenmarkTest/it_can_calculate_danish_holidays.snap @@ -0,0 +1,46 @@ +[ + { + "name": "Nyt\u00e5r", + "date": "2024-01-01" + }, + { + "name": "Sk\u00e6rtorsdag", + "date": "2024-03-28" + }, + { + "name": "Langfredag", + "date": "2024-03-29" + }, + { + "name": "P\u00e5skedag", + "date": "2024-04-01" + }, + { + "name": "Anden P\u00e5skedag", + "date": "2024-04-02" + }, + { + "name": "Kristi Himmelfartsdag", + "date": "2024-05-09" + }, + { + "name": "Pinse", + "date": "2024-05-19" + }, + { + "name": "Anden Pinsedag", + "date": "2024-05-20" + }, + { + "name": "Juleaften", + "date": "2024-12-24" + }, + { + "name": "Juledag", + "date": "2024-12-25" + }, + { + "name": "Anden Juledag", + "date": "2024-12-26" + } +] \ No newline at end of file diff --git a/tests/Countries/DenmarkTest.php b/tests/Countries/DenmarkTest.php new file mode 100644 index 00000000..dc01757c --- /dev/null +++ b/tests/Countries/DenmarkTest.php @@ -0,0 +1,18 @@ +get(); + + expect($holidays) + ->toBeArray() + ->not()->toBeEmpty(); + + expect(formatDates($holidays))->toMatchSnapshot(); +});