# PODNAME: Date::Holidays::GB =pod =head1 NAME Date::Holidays::GB - Determine British holidays - Current UK public and bank holiday dates up to 2026 =head1 SYNOPSIS use Date::Holidays::GB qw( holidays is_holiday next_holiday ); # All UK holidays my $holidays = holidays( year => 2013 ); # Holidays in England & Wales and Scotland my $holidays = holidays( year => 2013, regions => [ 'EAW', 'SCT' ] ); if (is_holiday( year => 2013, month => 12, day => 25, regions => [ 'EAW', 'SCT' ] ) ) { print "No work today!"; } # simpler "date" parameter (from v0.014) if ( is_holiday( date => '2013-12-25' ) ) { print "No work today!"; } # returns hashref of next holiday dates for regions (default all regions, # individually and together) my $next_holiday = next_holiday(); my $next_holiday = next_holiday( 'EAW', 'NIR' ); =head1 DESCRIPTION A L<Date::Holidays> style package updated with the British bank holiday dates now published at L<https://www.gov.uk/bank-holidays>. Holidays may apply to all regions, or some combination - see the C<regions> parameter for more details. N.B. - Dates of future holidays may occasionally be updated after they've been published. Module is named with correct ISO-3166-1 code for the United Kingdom: "GB" (Great Britain) To just work with holiday days for a single region, use one of the subclasses: L<Date::Holidays::GB::EAW>, L<Date::Holidays::GB::NIR>, or L<Date::Holidays::GB::SCT>. =head1 EXPORTS Exports C<holidays>, C<is_holiday>, C<next_holiday> on demand. Also can export the aliases C<gb_holidays>, C<is_gb_holiday> and C<next_gb_holiday>. =head1 METHODS Both C<is_holiday> and C<holidays> take either an argument list or hash of named arguments. The named arguments are C<year>, C<month>, C<day>, and C<region>. C<region> should be either omitted (to search all regions) or an arrayref of the UK regions that you are interested in, as ISO-3166-2 codes. The argument list should be in the following order: year, month, day, and (optionally) regions. Note that you will need to specify region(s) to make correct use of this module - Bank Holidays are not the same throughout the UK! =head2 holidays # year, month, day, [regions] my $holidays = holidays( @args ); or # ( year => ..., month => ..., day => ..., [ regions => \@. .. ] ) my $holidays = holidays( %args ); Returns hashref of holiday dates, values are a string listing the holiday(s) taking place on that date, with the region name(s) in parenthesis. Holidays that occur in all regions are returned with a single canonical name, taken from the name in England & Wales. Date keys are in the format MMDD, as per the behaviour of L<Date::Holidays>. =head2 is_holiday # year, month, day, [regions] my $holiday = is_holiday( @args ); or # date in YYYY-MM-DD format # ( date => ..., [ regions => \@. .. ] ) my $holiday = is_holiday( %args ); or # ( year => ..., month => ..., day => ..., [ regions => \@. .. ] ) my $holiday = is_holiday( %args ); Returns the holiday details (as per C<holidays>) but for a single date. Returns false if the specified date is not a holiday in the appropriate region(s). =head2 next_holiday my $next_holiday = next_holiday( @regions ); Returns the holiday details for the next holiday in the specified regions. If no regions are specified, returns the next holiday dates for all regions. The C<all> key in the results is the next holiday observed by all regions. =head2 date_generated print Date::Holidays::GB::date_generated; Prints the date that the data was downloaded, in YYYY-MM-DD format. =head1 ISO-3166-2 REGION CODES Valid codes for the regions that make up ISO-3166-1 "GB" are: =over =item * EAW - England & Wales =item * SCT - Scotland =item * NIR - Northern Ireland =back =head1 GENERATING THE DATA The source for this package is generated via a script, included with the distribution (C<share/generate_date_holidays_gb.pl>). This downloads the latest JSON files from L<https://www.gov.uk/>, and could be used to update/alter the package if necessary. =head1 SEE ALSO =over =item * L<Date::Holidays> =item * L<Date::Holidays::UK> - not currently updated =item * L<Date::Holidays::UK::EnglandAndWales> - only England and Wales =item * L<Date::Holidays::EnglandWales> - not currently updated =back =head1 SUPPORT =head2 Bugs / Feature Requests Please report any bugs or feature requests through the issue tracker at L<https://github.com/mjemmeson/Date-Holidays-GB/issues>. You will be notified automatically of any progress on your issue. =head2 Source Code This is open source software. The code repository is available for public review and contribution under the terms of the license. L<https://github.com/mjemmeson/Date-Holidays-GB> git clone https://github.com/mjemmeson/Date-Holidays-GB.git =head1 AUTHOR Michael Jemmeson <mjemmeson@cpan.org> =head1 CONTRIBUTORS =over =item Peter Newman =back =head1 COPYRIGHT This software is copyright (c) 2013-2024 by Michael Jemmeson. =head1 LICENSE This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut