Date::Holidays::UK - Determine UK Public Holidays


Date-Holidays-UK documentation Contained in the Date-Holidays-UK distribution.

Index


Code Index:

NAME

Top

Date::Holidays::UK - Determine UK Public Holidays

SYNOPSIS

Top

  use Date::Holidays::UK;
  my ($year, $month, $day) = (localtime)[ 5, 4, 3 ];
  $year  += 1900;
  $month += 1;
  print "Woohoo" if is_uk_holiday( $year, $month, $day );

DESCRIPTION

Top

Naming modules is a tricky thing, especially when similar modules already exist. The awkwardness can be further excaberated when the similar modules don't have consistent apis.

In this case we started by contrasting Date::Japanese::Holiday and Date::Holidays::DE. We've crossed the streams by taking the simple is_*_holiday interface from Date::Japanese::Holiday, and taken the Date::Holidays::<country> convention from Date::Holidays::DE. We hope nothing explodes.

SUBROUTINES

Top

is_uk_holiday( $year, $month, $day )

Returns the name of the Holiday that falls on the given day, or undef if there is none.

Holiday Data

Top

The DTI's webpage http://www.dti.gov.uk/er/bankhol.htm is taken as the canonical source for bank holidays.

CAVEATS

Top

We only currently contain the DTI bank holiday detail, which at the time of writing only covers the years 2004-2007.

AUTHOR

Top

Richard Clamp <richardc@fotango.com>, Amelie Guyot, Jerome Parfant.

COPYRIGHT

Top

BUGS

Top

None known.

Bugs should be reported to me via the CPAN RT system. http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Date::Holidays::UK.

SEE ALSO

Top

Date::Holidays::DE, Date::Japanese::Holiday


Date-Holidays-UK documentation Contained in the Date-Holidays-UK distribution.
package Date::Holidays::UK;
use strict;
use warnings;
use base qw(Exporter);
our $VERSION = '0.01';
our @EXPORT = qw( is_uk_holiday );

# XXX either programatically fill these, or just do the monkey work
# OOK!
our %holidays;

$holidays{ 2004,  1,  1 } =
$holidays{ 2005,  1,  3 } =
$holidays{ 2006,  1,  2 } =
$holidays{ 2007,  1,  1 } = "New Year's Day";

$holidays{ 2004,  4,  9 } =
$holidays{ 2005,  3, 25 } =
$holidays{ 2006,  4, 14 } =
$holidays{ 2007,  4,  6 } = "Good Friday";

$holidays{ 2004,  4, 12 } =
$holidays{ 2005,  3, 28 } =
$holidays{ 2006,  4, 17 } =
$holidays{ 2007,  4,  9 } = "Easter Monday";

$holidays{ 2004,  5,  3 } =
$holidays{ 2005,  5,  2 } =
$holidays{ 2006,  5,  1 } =
$holidays{ 2007,  5,  7 } = "Early May Bank Holiday";

$holidays{ 2004,  5, 31 } =
$holidays{ 2005,  5, 30 } =
$holidays{ 2006,  5, 29 } =
$holidays{ 2007,  5, 28 } = "Spring Bank Holiday";

$holidays{ 2004,  8, 30 } =
$holidays{ 2005,  8, 29 } =
$holidays{ 2006,  8, 28 } =
$holidays{ 2007,  8, 27 } = "Summer Bank Holiday";

$holidays{ 2004, 12, 25 } =
$holidays{ 2005, 12, 25 } =
$holidays{ 2006, 12, 25 } =
$holidays{ 2007, 12, 25 } = "Christmas Day";

$holidays{ 2004, 12, 26 } =
$holidays{ 2005, 12, 26 } =
$holidays{ 2006, 12, 26 } =
$holidays{ 2007, 12, 26 } = "Boxing Day";

$holidays{ 2004, 12, 27 } = "Substitute Bank Holiday in lieu of 26th";

$holidays{ 2004, 12, 28 } =
$holidays{ 2005, 12, 27 } = "Substitute Bank Holiday in lieu of 25th";

sub is_uk_holiday {
    my ($year, $month, $day) = @_;
    return $holidays{ $year, $month, $day };
}

1;
__END__