v2.5.0 ChangesJanuary 30, 2022
- Argentina Provider #264 (Nader Safadi).
- Turkey Provider #250.
- World Children's Day for Thuringia (Germany) #260.
- 🆕 New National Day for Truth and Reconciliation to Canada #257 (Owen V. Gray).
- 🆕 New Juneteenth National Independence Day to USA #253 (Mark Heintz).
- The Korea Tourism Organization's holiday guide link was added to the source of South Korea Provider. #255 (barami).
Mothering Day for the United Kingdom #266.
All holiday providers now include a method that returns a list of external sources (i.e. references to websites, books, scientific papers, etc.) that are used for determining the calculation logic of the providers' holidays.
- Revised rules to calculate substitution holidays of South Korea to apply the newly enacted law on June
calculateSubstituteHolidaysmethod of South Korea Provider to
calculateOldSubstituteHolidays. #255 (barami)
- 🔨 Refactored the tests of South Korea provider to testing substitution holidays. #255 (barami).
🚚 Moved the United Kingdom Spring Bank Holiday to June 2nd and added Platinum Jubilee bank holiday on June 3rd for #270 (Dan).
✅ Provider tests must implement the
ProviderTestCaseinterface to ensure all required test methods are defined.
YasumiTestCaseInterfacewas renamed to
HolidayTestCaseto better match the newly added
⚡️ Updated codebase using PHP7.4 syntax features.
⬆️ Upgraded PHP CS Fixer to v3.
- All Saints Day (German: 'AllerHeiligen') was classified as
Otherfor states celebrating this day. This was incorrect (or officially changed) and has been altered to
- Corpus Christi (German: 'Fronleichnam') was classified as
Otherfor states celebrating this day. This was incorrect (or officially changed) and has been altered to
- ✅ The test for the USA in that juneteenthDay was considered for all years: it is only celebrated since 2021.
Definition of Canada Day in Canada #257 in that, Canada Day is July 1 if that day is not Sunday, and July 2 if July 1 is a Sunday.(Owen V. Gray).
⏪ Reverted the visibility of the
AbstractProvider->getHolidaDates()method as it incorrectly was set to
- 👍 PHP7.3 Support as it is End of Life.
v2.4.0 ChangesMay 09, 2021
- Georgia Provider #245 (Zurab Sardarov)
Pentecost (Sunday) to Germany #225 (Patrick-Root)
✅ Infection PHP to perform mutation testing.
PHPStan to the dependencies allowing for local analysis.
.gitattributesfile to reduce the size of a release package #237 (Stéphane)
- ⏱ Rescheduled exceptional Japanese holidays for Olympic Games 2020 after COVID-19 #240 (tanakahisateru)
🔨 Some improvements/refactoring of the Swiss holiday providers (including source references) #233 (Quentin Ligier)
👍 Allow the
WEEKEND_DATAconstant in provider classes to be overridden. #235 (Mahmood Dhia)
⬆️ Upgraded PHPUnit's XML configuration.
🔨 Refactored removing the magic numbers for the lower and upper limits of the calendar year.
⚡️ Reformatted code using new/updated Code Styling rules.
Hardened error handling of json functions.
⚡️ Updated Copyright year.
- ✅ The test for North West Territories (Canada) in that the National Indigenous Peoples Day was considered for all years: it is only celebrated since 1996.
- ✅ The test for NovaScotia (Canada) in that novaScotiaHeritageDay was considered for all years: it is only celebrated since 2015.
- ✅ The test for Ontario (Canada) in that IslanderDay was considered for all years: it is only celebrated since 2009.
- ⏱ The test for Marine Day (Japan) as the rescheduled day was moved to 2021 (due to the COVID-19 pandemic).
Typo for Estonian Day of Restoration of Independence #228 (Reijo Vosu)
✅ The substitute holiday unit test as the use of the
at()method will be deprecated in PHPUnit 10.
Incorrect invocation of
👉 Use proper parameter and return type hinting
mt_randfunction with the
random_intfunction as it is cryptographically insecure.
Some static functions were used as if they are object functions.
- 💅 Travis/StyleCI/Scrutinizer services replaced by GitHub Actions.
- 👍 PHP 7.2 Support (PHP 7.2 is EOL)
- Faker library as it has been sunset #238 (Stéphane)
- Native function invocations.
- Various undefined class references, unused imports, etc.
- Unnecessary curly braces in strings,
continuekeyword in while loops, typecasting.
v2.3.0 ChangesJune 22, 2020
- ➕ Added Canada Provider #215 (lux)
- ➕ Added Luxembourg Provider #205 (Arkounay)
- Holiday providers for states of Austria. #182 (aprog)
- ➕ Added All Souls Day to Lithuania #227 (norkunas)
- Catholic Christmas Day is a new official holiday since 2017 in the Ukraine. #202
- ➕ Additional Dates for Australia/Victoria:AFL Grand Final Friday #190 (brucealdridge)
- Substituted holidays (holidays that fall in the weekend) for Australia. #201 (c960657)
- ➕ Added New Years Eve to Germany #226 (Patrick-Root)
- Day of Liberation (Tag der Befreiung) is a one-time official holiday in 2020 in Berlin (Germany).
- 🌐 Catalan translations for holidays in Catalonia, Valencian Community, Balearic Islands and Aragon #189 (c960657)
- ➕ Added American English spelling for Labour Day #216
➕ Added French translation for Second Christmas Day #188 (Arkounay)
➕ Added accessor methods Holiday::getKey() and SubstituteHoliday:: getSubstitutedHoliday() #220+#221 (c960657)
➕ Added missing return (correct) and parameter types in various methods.
- 📇 Renamed the Australian states to be full names instead of abbreviations to be in line with other Holiday Providers #214
- Statehood Day is celebrated at a new date since 2020 in Croatia. #203 (krukru)
- Independence Day is no longer an official holiday since 2020 in Croatia. #203 (krukru)
- Homeland Thanksgiving Day has been renamed to "Victory and Homeland Thanksgiving Day and the Day of Croatian Defenders" since 2020 in Croatia. #203 (krukru)
- Remembrance Day for Homeland War Victims and Remembrance Day for the Victims of Vukovar and Skabrnja is a new official holiday since 2020 in Croatia. #203 (krukru)
- 👷 Second International Workers' Day in Ukraine was an official holiday only until
Holiday names in Danish, Dutch, and Norwegian are no longer capitalized. #185 (c960657)
🔄 Changed the fallback from DEFAULT_LANGUAGE to ' en'. #183 (c960657)
🐎 Introduced a DateTimeZoneFactory class to improve performance. This will keep a static reference to the instantiated DateTimezone, thus saving resources. #213 (pvgnd)
🔄 Changed DateTime to DateTimeImmutable as dates should be that: immutable (by default)
Explicitly set nullable parameters as such.
🔨 Refactored various conditional structures.
🔄 Changed signature of some methods as parameters with defaults should come after required parameters.
⚡️ Updated third party dependencies.
- 🛠 Fixed Ukraine holidays on weekends. These days need to be substituted. #202
- 🛠 Fixed issue if the next working day happens to be in the next year (i.e. not in the year of the Yasumi instance) #192 (tniemann)
- 🛠 Fix locale fallback for substitute holidays #180 (c960657)
🛠 Fixed issue if the previous working day happens to be in the previous year (i.e. not in the year of the Yasumi instance)
🛠 Fixed compound conditions that are always true by simplifying the condition steps.
- 🗄 Deprecated direct access to public properties Holiday::$shortName and SubstituteHoliday::$substitutedHoliday in favor of accessor methods #220 (c960657)
- 👍 PHP 7.1 Support, as it has reached its end of life.
- ✂ Removed the assertion of the instance type in some functions as it is already defined by the return type.
- ✂ Removed unused variables, namespaces, brackets, empty tests, etc.
v2.2.0 ChangesOctober 06, 2019
- Holiday providers for England, Wales, Scotland and Northern Ireland #166 (c960657)
- Holiday Provider for South Korea. #156 (blood72)
- 🌐 Translation for the Easter holiday for the
fr_FRlocale #146 (pioc92)
- 🌐 Translation for the Pentecost holiday for the
fr_FRlocale #145 (pioc92)
- Late Summer Bank Holiday in the United Kingdom prior to 1965 #161 (c960657)
- Observance holidays for Sweden #172 (c960657)
- Created a special subclass of Holiday for substitute holidays #162 (c960657)
- ➕ Added additional code style fixers and aligning StyleCI settings with PHP-CS.
- Included extra requirement for some PHP Extensions in the composer file.
- ⚡️ Updated the translation for the All Saints holiday for the
fr_FRlocale #152 (pioc92)
- ⚡️ Updated the translation for the Armistice holiday for the
fr_FRlocale #154 (pioc92)
- ⚡️ Updated the translation for the Victory in Europe holiday for the
fr_FRlocale #153 (pioc92)
- ⚡️ Updated the translation for the Assumption of Mary holiday for the
fr_FRlocale #155 (pioc92)
- ⚡️ Updated the translation for Christmas Day for the
nl_NLlocale #160 (pioc92)
- 💅 Reordered arguments to Yoda style.
- Replaced null checks by appropriate instance / type checks.
- 🚚 Moved default method values to method body as parameters should be nullable.
- Applying the use of strict types. Strict typing allows for improved readability, maintainability, and less prone to bugs and security vulnerabilities.
- 👍 PHP 7.1 is allowed to fail for Travis-CI due to the fact PHPUnit 8 requires PHP >= 7.2. PHP 7.1 support will be dropped in Yasumi once 7.1 has reached its end of life (December 2019).
- Code using class imports rather than Fully Qualified Class names.
- ⬆️ Upgraded to PHPUnit 8.
- 👻 Replaced the standard 'InvalidArgumentException' when an invalid year or holiday provider is given by a new exception for each of these two situations separately ('InvalidYearException' and 'ProviderNotFoundException'). This allows you to better distinguish which exception may occur when instantiating the Yasumi class. #95 (qneyrat)
- 🔨 Refactored the AbstractProvider::count method to use the newly added SubstituteHoliday class.
- 👍 Fallback support added to getName() to allow e.g. fallback from
de. #176 (c960657)
- Late Summer Bank Holiday in 1968 and 1969 in United Kingdom #161 (c960657)
- 🛠 Fixed one-off exceptions for May Day Bank Holiday in 1995 and 2020 and Spring Bank Holiday in 2002 and 2012 (United Kingdom) #160 (c960657)
- 🛠 Fixed revoked holidays in Portugal in 2013-2015 #163 (c960657)
- 🛠 Fixed spelling issues in the Danish translation for Second Christmas Day. #167 (c960657)
- Corpus Christi is official in Poland #168 (c960657)
- Liberation Day is official in the Netherlands #169 (c960657)
- ✏️ Typos in Easter Monday and Republic Day for the 'it_IT' locale #171 (c960657)
- Corrected the name of the Emperors Birthday function and variable.
- Good Friday is not official in Brazil #174 (c960657)
- Unused constants.
v2.1.0 ChangesMarch 29, 2019
🚀 A couple of months after the successful v2 release, a new minor release is available as of today. Yasumi v2.1 addresses mostly a few issues for the Japan Holiday Provider and some other bug fixes.
- As the Japanese Emperor will abdicate the throne on May 1st 2019, the holiday of the Emporers Birthday will change to February 23rd from 2020 (No holiday in 2019). In addition, Coronation Day and the Enthronement Proclamation Ceremony will be extra holidays in 2019. #130 (cookie-maker)
- International Women's Day is an official holiday since 2019 in Berlin (Germany). #133 (huehnerhose)
- Japanese Health And Sports Day will be renamed to Sports Day from 2020. #129 (cookie-maker)
- Dutch spelling for Easter/Pentecost/Christmas to use lower case. #128 (c960657)
- 🔨 Refactored the Netherlands Holiday provider by moving the calculation of individual holidays to private methods. This will reduce the complexity of the initialize method.
- Visibility of internal class functions to 'private'. These are to be used within the class only and should not be public.
- "Bridge Day" for Japan takes two days in 2019. Currently the code only allows for 1 bridge day at a maximum. #141 (cookie-maker)
- ✅ Tests for Bremen, Lower Saxony and Schleswig Holstein (Germany) also celebrated Reformation Day in 2017. The unit tests were failing as it didn't account for that.
- 🔄 Changed the USA Provider to check all holidays for potential substitute holidays, not just New Year's Day, Independence Day, and Christmas Day. #140 (jagers)
- ✅ Adjusted tests for the 'next' and 'previous' methods to avoid actually exceeding the year boundaries.
- 📦 Deprecation warning for the package mikey179/vfStream. Composer 2.0 requires package names to not contain any upper case characters. #135 (IceShack)
- Incorrect comment about weekends in India #126 (c960657)
- ✅ Correction to the test of New Year's day in the United Kingdom. It has been identified as a Bank Holiday only since 1975 (not from 1974).
- Duplicate definition of newYearsDay #125 (c960657)
v2.0.0 ChangesJanuary 11, 2019
Almost a year has passed since the release of v1.8.0, but finally it is here: Yasumi v2.0.0!
⬆️ Upgraded entirely to PHP version 7 with PHP 7.1 being the minimum required version. Base code and all unit tests have been reworked to compatibility with PHP 7. This also means support of PHP 5 has now come to an end.
🚀 More details can be found in the blog entry here: Welcome Yasumi version 2!
- 🆕 New filter to select holidays that happen on a given date #119 (cruxicheiros)
- Holiday Providers for all Australian states and territories. #112 (Milamber33)
- Holiday Provider for Bosnia. #94 (TheAdnan)
- ➕ Added Reformation Day as offical holiday since 2018 in Lower Saxony (Germany). #115 (Taxcamp)
- ➕ Added Reformation Day as offical holiday since 2018 in Schleswig-Holstein (Germany). #106 (HenningCash)
- ➕ Added Reformation Day as offical holiday since 2018 in Hamburg (Germany). #108 (HenningCash)
- ➕ Added Reformation Day as offical holiday since 2018 in Bremen (Germany). #116 (TalonTR)
- The (observed) holidays Lukkeloven, Constitution Day, New Year's Eve and Labour Day, as well as summertime and wintertime are included for Denmark #104 (c960657)
- ⬆️ Upgraded to PHPUnit to version 7.5.
- 🔄 Changed Japanese holiday for the 2020 Olympic Games. Marine Day, Mountain Day and Health And Sports Day. #113 (cookie-maker)
- Summer/winter time is now fetched from PHP's tz database. #103 (c960657)
- 🔄 Changed translation for Norway's national day. #98 (c960657)
- Applied proper null checks in the summertime and wintertime calculations for Denmark and The Netherlands.
- Corrected some namespaces for Australia and Germany.
- ⚡️ Updated copyright year.
- ⬆️ Upgraded various dependency packages.
- ⚡️ Internal locale list updated based on CLDR v34.
- 🔨 Refactored the Japan and USA Holiday Provider by moving the holiday calculations to private methods. This reduced the complexity of the initialize method.
- 🌐 Translation for Russia showed in English (except New Year's Day) as the proper locale was not in place.
- 🛠 Fixed issue for summertime in Denmark in 1980. By default summertime in Denmark is set for the last day of March since 1980, however in 1980 itself, it started on April, 6th.
- 🛠 Fixed spelling issue in the Swedish translation. #97 (c960657)
- 🛠 Fixed spelling issues in the Danish translation. #96 (c960657)
- 🛠 Fixed German Easter Sunday and Pentecost Sunday holidays (not nationwide, only in Brandenburg). #100 (TalonTR)
- 🛠 Fixed BetweenFilter to ignore time part and timezone. #101 (c960657)
- 🛠 Fixed bug in provider list generation related to variable order of files returned by the filesystem #107 (leafnode)
v1.8.1 ChangesJanuary 11, 2019
🚀 Yasumi version 2.0 has been released (and v1.8.1)!
🚀 With the release of Yasumi v2.0.0 supporting only PHP version 7.1 (or higher), support for PHP 5 in Yasumi has ended (Sorry!).
🚑 This 1.8.1 bug fix release has been made available for those that still are on PHP 5 (or are in the process of upgrading to PHP 7). It only includes some serious/critical bug fixes discovered since version 1.8.0 and no new countries have been added for example.
🚑 Please be aware that all new development will be done from v2.0.0 onwards (in the 'develop' branch). The 'support/1.8.x' branch has been created for critical bug fixes only.
- ➕ Added PHP 7.2 and 7.3 to the TravisCI configuration.
- 🔄 Changed Japanese holiday for the 2020 Olympic Games. Marine Day, Mountain Day and Health And Sports Day. #113
- 🔄 Changed translation for Norway's national day. #98
- Except New Years Day, all holidays for Russia didn't have the locale parameter in place, causing Yasumi to use the fallback locale ('en_US').
- 🛠 Fixed spelling issue in the Swedish translation. #97
- 🛠 Fixed spelling issues in the Danish translation. #96
- 🛠 Fixed German Easter Sunday and Pentecost Sunday holidays (not nationwide, only in Brandenburg). #100
- 🛠 Fixed BetweenFilter to ignore time part and timezone. #101
- 🛠 Fixed bug in provider list generation related to variable order of files returned by the filesystem #107
- 🛠 Fixed issues that assertNotHoliday() skips rest of test
- Type cast to integer as Yasumi::create() requires an integer.
- 🔄 Changed access to static variables with 'self'. Accessing with 'static' can lead to possible sub-classes.
- Corrected date parameter to be of DateTime (instead of DateTimeInterface) as the parameter object needs to be a direct instance.
- 🔄 Changed way to get current year so value is an integer (as required by the class). PHP's date function is intended for formatting and returns a string type as such.
- ✅ Corrected test using different start year to avoid incorrect assertion.
v1.8.0 ChangesFebruary 21, 2018
👍 Yasumi v1.8.0 is now available as of Wednesday, February 21st supporting Russia and Estonia thanks to the work of Gedas Lukošius.
🚀 As already announced in my previous post, 1.8.0 will be the last release to officially support PHP5.x. I think it's about time that Yasumi will fully support PHP7 using its performance improvements.
🛠 Next to Russia and Estonia being part of the family, 1.8.0 includes a good number of fixes and changes as well.
- ➕ Added a function that can remove a holiday from the holidays providers (i.e. country/state) list of holidays. This function can be helpful in cases where an existing holiday provider class can be extended but some holidays are not part of the original (extended) provider.
- 🔄 Changed various functions that have a date parameter to support now objects implementing the DateTimeInterface and objects of the DateTimeImmutable type.
- ➕ Added support for countries where the weekend definition (start and end day) differs from the global definition (Saturday and Sunday).
- Holiday Provider for Russia. #72 (lukosius)
- Holiday Provider for Estonia. #71 (lukosius)
- ➕ Added Scrutinizer integration.
- ⚡️ Locale List updated based on CLDR version 32.
- ➕ Added PHPStan static analysis tool to Travis CI #88 (lukosius)
- 📚 Various inline documentation enhancements. #87 (lukosius)
- ✂ Removed unnecessary typecasts and if-construct. #87 (lukosius)
- 📚 Updated inline documentation to include correction Exception throws.
- ✂ Removed unnecessary NULL checks.
- 🛠 Fixed Brazilian Carnaval Day and added Ash Wednesday to Brazilian Holidays. #92 (glauberm)
- Yasumi listed 01.04.2018 (Easter Sunday) for Spain as an official holiday, however it is not recognized as such. Fix made that recognizes Easter Sunday as being observed (in all regions). #86 (Bastian Konetzny)
- Corrected reference to the Holiday Provider's ID to be static.
- 🔄 Changed weekend data property into constant as it is not dynamic (runtime).
- 🌐 Corrected the name translation test for the Restoration of Independence Day (Portugal). The test didn't account for the fact that this holiday was abolished and reinstated at some time.
- ✅ Corrected unit test for Geneva (Switzerland) as the jeune Genevois day was incorrectly asserted as a regional holiday.
- Corrected the count logic so that in case a holiday is substituted (or observed), it is only counted once.
- ⬇️ Dropped unnecessary arguments of some methods in various Holiday Providers.
- Corrected Japanese "Green Day" and "Children's Day" to use "Hiragana" instead of Kanji. #80 (cookie-maker)
v1.7.0 ChangesDecember 11, 2017
🚀 A new release was long overdue and v1.7.0 has some nice enhancements... Four new countries have been added (Latvia, Lithuania, Hungary and Switzerland) making the total of holiday providers 96! (31 countries and 65 sub-regions).
Instead of giving the country name as a parameter, you can now also use the ISO3166_2 code to instantiate a Holiday object, which in some cases makes more sense. Also, all filters implement the Countable interface so you can use the ->count() method, which will return the correct number of (filtered) holidays.
🚀 Heads up! v1.7.0 will be the last release supporting PHP5.x. PHP7 has been out for a long time and Yasumi can definitely benefit from the new features in PHP7. Likely the PHP7 only branch will start as v2.0.0.
As always a big thanks to all the contributors!
- Holiday Provider for Latvia. #70 (lukosius)
- Holiday Provider for Lithuania. #67 (lukosius)
- Holiday Provider for Hungary. #57 (AronNovak)
- Holiday Provider for Switzerland. #56 (qligier)
- All filters implement the Countable interface allowing you to use the ->count() method. #77
- Sometimes it is more convenient to be able to create a Yasumi instance by ISO3166 code rather than Yasumi's Holiday Provider name. A new function createByISO3166_2 has been added to allow for that. #62 (huehnerhose)
- 🌐 Missing translations (de_DE) for Easter Sunday and Whitsunday. #60 (IceShack)
- Made calculate method public and use of proper camel casing. #73 (patrickreck)
- ⬆️ Upgraded Faker Library to version 1.7
- 📇 Renamed the holiday type NATIONAL to OFFICIAL. Subregions may have official holidays and the name NATIONAL doesn't suit these situations. #65
- ⬆️ Upgraded PHP-CS-Fixer to version 2.6
- ✅ Corrected Geneva (Switzerland) unit test to ensure some holidays that are established at a particular year are handled as such.
- Repentance Day is an official holiday in Saxony (Germany) #63
- 🌐 Corrected the Easter Sunday translation for Austria (de_AT) #66
- ✅ Corrected Hungary unit test to ensure holidays that are established at a particular year are handled as such.
- ➕ Added missing Summer Bank Holiday for the United Kingdom. #64
v1.6.1 ChangesFebruary 07, 2017
🛠 This bugfix release addresses some minor annoying issues, so unfortunately no new features this time.
- 🚚 Moved Reformation Day to Christian Holidays as it is not only celebrated in Germany.
- ➕ Added missing unit tests for the German Unit Day for each German state.
- 🛠 Fixed Christmas Day and Boxing Day for the United Kingdom. A substitute bank holiday is now created for both Christmas and Boxing Day when either of those days fall on a weekend. #48 (joshuabaker)
- 🌐 Renamed 'en_US' translation for the Second Christmas Day (from ‘Boxing Day’ to ‘Second Christmas Day’: Boxing Day concept does not exist in the US). #53 (AngelinCalu)
- Created fallback calculation of the easter_days function in case the PHP extension 'calendar' is not loaded. #55 (stelgenhof)
- ➕ Added missing unit tests for Reformation Day as in 2017 it is celebrated in all German states for its 500th anniversary.
- 🔄 Changed Travis configuration to use Composer-installed phpunit to avoid if any issues arise with globally installed phpunit.