castorland / hu-holidays
Hungarian Holidays Wrapper for the Carbon DateTime Library
Fund package maintenance!
castorland
Requires
- php: ^8.0 || ^8.1 || ^8.2
- ext-calendar: *
- nesbot/carbon: ^2.67.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.5
- phpunit/phpunit: ^5|^6|^7.5|^8.0|^9.0
README
Carbon Support for US Holidays
This extends Carbon and adds support for Hungarian holidays. (Thanks for Geoffrey Rose for the base idea and code.)
Full Documentation
v2.x https://castorland.github.io/hu-holidays/
Supported Holidays
- Újév
- Vízkereszt, a farsang kezdete
- A világirodalom napja
- A vallások világnapja
- A magyar kultúra napja
- A holokauszt nemzetközi emléknapja
- A civilek napja
- Rejtvényfejtők világnapja
- Rákellenes világnap
- Valentin-nap
- A kínai újév kezdete
- Hamvazószerda
- A meteorológiai tavasz kezdete
- Energiatakarékossági világnap
- Nőnap
- Nemzetközi pi nap
- Az 1848-as forradalom ünnepe
- A víz világnapja
- Bolondok napja
- Nagypéntek
- Húsvét hétfő
- Az egészség világnapja
- A magyar költészet napja
- A Föld napja
- A méhek napja
- A munka ünnepe
- A Nap napja
- Anyák napja
- Madarak és Fák Napja
- A család nemzetközi napja
- Nemzetközi férfinap
- Kihívás napja
- Gyereknap
- Pünkösdhétfő
- Környezetvédelmi világnap
- Medárd napja
- Apák napja
- Semmelweis-nap
- A Hold napja
- Nagyboldogasszony napja
- Az államalapítás ünnepe
- Európai autómentes nap
- Az aradi vértanúk emléknapja
- Földünkért világnap
- Az 1956-os forradalom ünnepe
- Őszirózsás forradalom
- Mindenszentek
- Halottak napja
- Black Friday
- Cyber Monday
- A Nobel-díj alapításának napja
- Szenteste
- Karácsony
- Karácsony másnap
- Szilveszter
Requirements
- Carbon
- PHP 8.0+
Usage
With Composer
composer require castorland/hu-holidays
<?php require 'vendor/autoload.php'; use Castorland\HUHolidays\Carbon;
Without Composer
<?php require 'path/to/nesbot/Carbon.php'; require 'path/to/castorland/Carbon.php'; use Castorland\HUHolidays\Carbon;
Get Holiday By Year
See documentation for more details
$carbon = Carbon::create(2020, 1, 1); $holidays = $carbon->getHolidaysByYear('all'); // [ // { // "name": "Újév", // string // "date": "2020-01-01 00:00:00", // DateTime object // "bank_holiday": true, // boolean // "days_away": 0, // int // }, // { // "name": "Vízkereszt, a farsang kezdete", // string // "date": "2020-01-06 00:00:00", // DateTime object // "bank_holiday": false, // boolean // "days_away": 5 // int // } // ... // ]
Get Holiday In Days
See documentation for more details
$carbon = Carbon::create(2020, 5, 2); $holidays = $carbon->getHolidaysInDays(300, 'all'); // or $holidays = $carbon->getHolidaysInDays(300); // [ // { // "name": "A Nap napja", // string // "date": "2020-05-03 00:00:00", // DateTime object // "bank_holiday": false, // boolean // "days_away": 1 // int // }, { // "name": "Madarak és Fák Napja", // string // "date": "2020-05-10 00:00:00", // DateTime object // "bank_holiday": false, // boolean // "days_away": 8 // int // }, // ... // ]
Get Holiday In Years
See documentation for more details
$carbon = Carbon::create(2020, 8, 18); $holidays = $carbon->getHolidaysInYears(1, 'all'); // or $holidays = $carbon->getHolidaysInYears(1); // [ // { // "name": "Az államalapítás ünnepe", // string // "date": "2020-08-20 00:00:00", // DateTime object // "bank_holiday": true,// boolean // "days_away": 2 // int // }, { // "name": "Európai autómentes nap", // string // "date": "2020-09-22 00:00:00", // DateTime object // "bank_holiday": false, // boolean // "days_away": 35 // int // }, // ... // ]
Get Holiday Date
See documentation for more details
$carbon = Carbon::create(2020, 1, 1); $carbon->getBolondokNapjaHoliday(); // { // "name": "Bolondok napja", // "date": "2020-04-01 00:00:00", // "bank_holiday": false // "days_away": 91 // }
$carbon->getACivilekNapjaHoliday(); $carbon->getACsaladNemzetkoziNapjaHoliday(); $carbon->getAFoldNapja(); $carbon->getAHoldNapja(); $carbon->getAHolokausztNemzetkoziEmleknapjaHoliday(); $carbon->getAKinaiUjevKezdeteHoliday(); $carbon->getAMagyarKolteszetNapjaHoliday(); $carbon->getAMagyarKulturaNapjaHoliday(); $carbon->getAMehekNapjaHoliday(); $carbon->getAMeteorologiaiTavaszKezdeteHoliday(); $carbon->getAMunkaUnnepeHoliday(); $carbon->getANapNapjaHoliday(); $carbon->getANobelDijAlapitasanakNapjaHoliday(); $carbon->getAnyakNapjaHoliday(); $carbon->getApakNapjaHoliday(); $carbon->getAVallasokVilagnapjaHoliday(); $carbon->getAVilagirodalomNapjaHoliday(); $carbon->getAVizVilagnapjaHoliday(); $carbon->getAz1848asForradalomUnnepeHoliday(); $carbon->getAz1956osForradalomUnnepeHoliday(); $carbon->getAzAllamalapitasUnnepeHoliday(); $carbon->getAzAradiVertanukEmleknapjaHoliday(); $carbon->getAzEgeszsegVilagnapjaHoliday(); $carbon->getBlackFridayHoliday(); $carbon->getBolondokNapjaHoliday(); $carbon->getCyberMondayHoliday(); $carbon->getEnergiatakarekossagiVilagnapHoliday(); $carbon->getEuropaiAutomentesNapHoliday(); $carbon->getFoldunkertVilagnapHoliday(); $carbon->getGyerenapHoliday(); $carbon->getHalottakNapjaHoliday(); $carbon->getHamvazoszerdaHoliday(); $carbon->getHusvetHetfoHoliday(); $carbon->getKaracsonyHoliday(); $carbon->getKaracsonyMasnapHoliday(); $carbon->getKihivasNapjaHoliday(); $carbon->getKornyezetvedelmiVilagnapHoliday(); $carbon->getMadarakEsFakNapjaHoliday(); $carbon->getMedardNapjaHoliday(); $carbon->getMindenszentekHoliday(); $carbon->getNagyboldogasszonyNapjaHoliday(); $carbon->getNagypentekHoliday(); $carbon->getNemzetkoziFerfinapHoliday(); $carbon->getNemzetkoziPiNapHoliday(); $carbon->getNonapHoliday(); $carbon->getOszirozsasForradalomHoliday(); $carbon->getPunkosdHetfoHoliday(); $carbon->getRakellenesVilagnapHoliday(); $carbon->getRejtvenyfejtokVilagnapjaHoliday(); $carbon->getSemmelweisNapHoliday(); $carbon->getSzentesteHoliday(); $carbon->getSzilveszterHoliday(); $carbon->getUjevHoliday(); $carbon->getVizkeresztaFarsangKezdeteHoliday();
isHoliday()
See documentation for more details
Check if date is holiday. Returns boolean
$carbon = new Carbon(); $carbon = Carbon::create(2018, 12, 25); $carbon->isHoliday(); // bool (true)
isBankHoliday()
See documentation for more details
Check if date is a Bank Holiday and the day it is observed on. I.E. if the holiday falls if a holiday falls on Sunday, the holiday is observed the next day (Monday). Note: Bank holidays are Monday - Friday Only. Holidays that are always on weekends are not consider bank holidays. Also holidays that are Bank Holidays but fall on Saturday are NOT observed on the previous Friday. Returns boolean
$carbon = Carbon::create(2020, 1, 1); // Újév - Wednesday $carbon->isBankHoliday(); // boolean (true) $carbon = Carbon::create(2020, 1, 2); $carbon->isBankHoliday(); // boolean (false) $carbon = Carbon::create(2020, 03, 15); // Az 1848-as forradalom ünnepe $carbon->isBankHoliday(); // boolean (false) $carbon = Carbon::create(2018, 12, 25); // Karácsony - Tuesday $carbon->isBankHoliday(); // boolean (true) $carbon = Carbon::create(2016, 12, 25); // Karácsony - Sunday $carbon->isBankHoliday(); // boolean (false) $carbon = Carbon::create(2016, 12, 26); // Karácsony Másnap - Monday $carbon->isBankHoliday(); // boolean (true) $carbon = Carbon::create(2021, 12, 25); // Karácsony - Saturday $carbon->isBankHoliday(); // boolean (false) $carbon = Carbon::create(2021, 12, 24); // Szenteste - Friday $carbon->isBankHoliday(); // boolean (false)
Get Holiday Name
See documentation for more details
Get name if date is holiday. Returns string
or false
$carbon = Carbon::create(2018, 12, 31); $carbon->getHolidayName(); // Szilveszter
Add Own Holiday
See documentation for more details
$carbon = new Carbon(); $carbon->addHoliday([ 'name' => "A kockásfülű nyúl kezdete", 'date' => Carbon::create(1977, 8, 26), 'bank_holiday' => false ]); $carbon->addHoliday([ 'name' => "SZJA Bevallás", 'date' => function() use($carbon) { $q1 = Carbon::create($carbon->year, 5, 22, 0, 0, 0); if($q1->isBankHoliday()) { $q1->addDay(); if($q1->isWeekend()) { $q1->next(Carbon::MONDAY); } } if($q1->isWeekend()) { $q1->next(Carbon::MONDAY); } if($q1 < $carbon) { $q1 = Carbon::create($carbon->year + 1, 5, 22, 0, 0, 0); if($q1->isBankHoliday()) { $q1->addDay(); if($q1->isWeekend()) { $q1->next(Carbon::MONDAY); } } if($q1->isWeekend()) { $q1->next(Carbon::MONDAY); } } if($q1->isBankHoliday()) { $q1->addDay(); } return $q1; }, 'bank_holiday' => false ]);
Additional Examples
$carbon = Carbon::create(2016, 12, 25); // Sunday $carbon->getHolidayName(); // Karácsony $carbon = Carbon::create(2016, 12, 26); // Monday $carbon->getHolidayName(); // Karácsony Másnap
Contributing
- Clone the repo and install dependencies.
composer install
- Run Tests
Use locally installed carbon version
$ ./vendor/bin/phpunit
// or with coverage
$ XDEBUG_MODE=coverage ./vendor/bin/phpunit
Test against Carbon v2
./tests/carbon-2.sh