Date::Holidays::BR - Determine Brazilian public holidays
use Date::Holidays::BR; my ($year, $month, $day) = (localtime)[ 5, 4, 3 ]; $year += 1900; $month += 1; print "Woohoo" if is_br_holiday( $year, $month, $day ); my $h = br_holidays($year); printf "Jan. 1st is named '%s'\n", $h->{'0101'};
Creates a new Date::Holidays::BR object.
my $mh = Date::Holidays::BR->new();
Should at least take three arguments:
year (four digits) month (between 1-12) day (between 1-31)
The return value from is_holiday is either a 1 or a 0 (1 if the specified date is a holiday, 0 otherwise).
if ( $mh->is_holiday( $year, $month, $day ) ) { # it's a holiday }
Similar to is_holiday, but instead of returning 1 if the date is a holiday returns a string comprising the name of the holidays. In the event of two or more holidays on the same day (hey, it happens), the string will comprise the name of all those holidays separated by a semicolon.
my $todays_holiday = $mh->is_br_holiday( $year, $month, $day ); if ( $todays_holiday ) { print "Today is $todays_holiday.\nDon't bother getting up!\n"; }
Should take at least one argument:
year (four digits)
Returns a reference to a hash, where the keys are date represented as four digits, the two first representing month (01-12) and the last two representing day (01-31).
The value for the key in question is the local name for the holiday indicated by the day. In the event of two or more holidays on the same day (yes, it happens!), the values will comprise the name of all those holidays separated by a semicolon.
my $years_holidays = holidays( $year ); for (keys %$years_holidays) { my ($day, $month) = /(..)(..)/; print "$day/$month - $years_holidays->$_\n"; }
The following Brazilian holidays have fixed dates:
Jan 1 Confraternização Universal Apr 21 Tiradentes May 1 Dia do Trabalho Sep 7 Independência do Brasil Oct 12 Nossa Senhora Aparecida Nov 2 Dia de Finados Nov 15 Proclamação da República Dec 25 Natal
The following Brazilian holidays have mobile dates:
Sexta-feira da Paixão (Friday before Páscoa / Easter)
Being a large country, Brazil separates its holidays in national, state and municipal holidays. Law 9.093 of 1995 states as holidays:
the fixed dates above;
the data magna of the State (State's most important date, as determined in that State's law);
the days beginning and ending the hundredth year of a city's foundation, as determined in that City's law);
religious holidays as determined by each City's law, no more than 4, and already including Sexta-feira da Paixão.
Since that last item makes Sexta-feira da Paixão a holiday for every city in the Country, it was marked as a national holiday.
Páscoa (Easter) is celebrated, but since it always falls on a Sunday, there is no law declaring it as an actual Brazilian Holiday. If you feel it should be added or finds out I am mistaken, please let me know.
Lei 10.607 de 2002
Lei 9.335 de 1996
Lei 9.093 de 1995
Lei 6.802 de 1980
Lei 662 de 1949
Jonas B. Nielsen, for his work regarding the standardization of Date::Holidays modules.
Jose Castro, as this module was taken nearly verbatim from Date::Duration::PT.
Breno G. de Oliveira, <garu@cpan.org>
<garu@cpan.org>
Please report any bugs or feature requests to bug-date-holidays-br@rt.cpan.org, or through the web interface at http://rt.cpan.org. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-date-holidays-br@rt.cpan.org
Copyright 2009 Breno G. de Oliveira, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
1 POD Error
The following errors were encountered while parsing the POD:
Non-ASCII character seen before =encoding in 'Confraternização'. Assuming UTF-8
To install Date::Holidays::BR, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Date::Holidays::BR
CPAN shell
perl -MCPAN -e shell install Date::Holidays::BR
For more information on module installation, please visit the detailed CPAN module installation guide.