File Coverage

blib/lib/Date/Holidays/USFederal.pm
Criterion Covered Total %
statement 11 11 100.0
branch n/a
condition n/a
subroutine 4 4 100.0
pod 1 1 100.0
total 16 16 100.0


line stmt bran cond sub pod time code
1             package Date::Holidays::USFederal;
2 1     1   1535 use strict;
  1         2  
  1         34  
3 1     1   6 use warnings;
  1         1  
  1         45  
4 1     1   6 use base qw(Exporter);
  1         14  
  1         2540  
5             our $VERSION = '1.0';
6             our @EXPORT = qw( is_usfed_holiday );
7              
8             =head1 NAME
9              
10             Date::Holidays::USFederal - Determine US Federal Public Holidays
11              
12             =head1 SYNOPSIS
13              
14             use Date::Holidays::USFederal;
15             my ($year, $month, $day) = (localtime)[ 5, 4, 3 ];
16             $year += 1900;
17             $month += 1;
18             print "Woohoo" if is_usfed_holiday( $year, $month, $day );
19              
20             =head1 DESCRIPTION
21              
22             The naming convention for the module follows that of L(Date::Holidays:UK)
23             as where the format for this module was also taken.
24              
25             =head1 SUBROUTINES
26              
27             =head2 is_usfed_holiday( $year, $month, $day )
28              
29             Returns the name of the Holiday that falls on the given day, or undef
30             if there is none.
31              
32             =cut
33              
34             #
35             #
36             our %holidays;
37              
38             $holidays{ 1997, 1, 1 } =
39             $holidays{ 1998, 1, 1 } =
40             $holidays{ 1999, 1, 1 } =
41             $holidays{ 1999, 12, 31 } =
42             $holidays{ 2001, 1, 1 } =
43             $holidays{ 2002, 1, 1 } =
44             $holidays{ 2003, 1, 1 } =
45             $holidays{ 2004, 1, 1 } =
46             $holidays{ 2004, 12, 31 } =
47             $holidays{ 2006, 1, 2 } =
48             $holidays{ 2007, 1, 1 } =
49             $holidays{ 2008, 1, 1 } =
50             $holidays{ 2009, 1, 1 } =
51             $holidays{ 2010, 1, 1 } =
52             $holidays{ 2010, 12, 31 } =
53             $holidays{ 2012, 1, 2 } =
54             $holidays{ 2013, 1, 1 } =
55             $holidays{ 2014, 1, 1 } =
56             $holidays{ 2015, 1, 1 } =
57             $holidays{ 2016, 1, 1 } =
58             $holidays{ 2017, 1, 2 } =
59             $holidays{ 2018, 1, 1 } =
60             $holidays{ 2019, 1, 1 } =
61             $holidays{ 2020, 1, 1 } =
62             $holidays{ 2021, 1, 1 } =
63             $holidays{ 2022, 12, 31 } =
64             $holidays{ 2023, 1, 2 } =
65             $holidays{ 2024, 1, 1 } =
66             $holidays{ 2025, 1, 1 } = "New Year's Day";
67              
68             $holidays{ 1997, 1, 20 } =
69             $holidays{ 1998, 1, 19 } =
70             $holidays{ 1999, 1, 18 } =
71             $holidays{ 2000, 1, 17 } =
72             $holidays{ 2001, 1, 15 } =
73             $holidays{ 2002, 1, 17 } =
74             $holidays{ 2003, 1, 20 } =
75             $holidays{ 2004, 1, 19 } =
76             $holidays{ 2005, 1, 17 } =
77             $holidays{ 2006, 1, 16 } =
78             $holidays{ 2007, 1, 15 } =
79             $holidays{ 2008, 1, 21 } =
80             $holidays{ 2009, 1, 19 } =
81             $holidays{ 2010, 1, 18 } =
82             $holidays{ 2011, 1, 17 } =
83             $holidays{ 2012, 1, 16 } =
84             $holidays{ 2013, 1, 21 } =
85             $holidays{ 2014, 1, 20 } =
86             $holidays{ 2015, 1, 19 } =
87             $holidays{ 2016, 1, 18 } =
88             $holidays{ 2017, 1, 16 } =
89             $holidays{ 2018, 1, 15 } =
90             $holidays{ 2019, 1, 21 } =
91             $holidays{ 2020, 1, 20 } =
92             $holidays{ 2021, 1, 18 } =
93             $holidays{ 2022, 1, 17 } =
94             $holidays{ 2023, 1, 16 } =
95             $holidays{ 2024, 1, 15 } =
96             $holidays{ 2025, 1, 20 } = "Martin Luther King, Jr. Birthday";
97              
98             $holidays{ 2001, 1, 20 } =
99             $holidays{ 2005, 1, 20 } =
100             $holidays{ 2009, 1, 20 } =
101             $holidays{ 2013, 1, 20 } =
102             $holidays{ 2017, 1, 20 } =
103             $holidays{ 2021, 1, 20 } =
104             $holidays{ 2025, 1, 20 } = "Inaugration Days (Observed in US Capitol Area)";
105              
106             $holidays{ 1997, 2, 17 } =
107             $holidays{ 1998, 2, 16 } =
108             $holidays{ 1999, 2, 15 } =
109             $holidays{ 2000, 2, 21 } =
110             $holidays{ 2001, 2, 19 } =
111             $holidays{ 2002, 2, 18 } =
112             $holidays{ 2003, 2, 17 } =
113             $holidays{ 2004, 2, 16 } =
114             $holidays{ 2005, 2, 21 } =
115             $holidays{ 2006, 2, 20 } =
116             $holidays{ 2007, 2, 19 } =
117             $holidays{ 2008, 2, 18 } =
118             $holidays{ 2009, 2, 16 } =
119             $holidays{ 2010, 2, 15 } =
120             $holidays{ 2011, 2, 21 } =
121             $holidays{ 2012, 2, 20 } =
122             $holidays{ 2013, 2, 18 } =
123             $holidays{ 2014, 2, 17 } =
124             $holidays{ 2015, 2, 16 } =
125             $holidays{ 2016, 2, 15 } =
126             $holidays{ 2017, 2, 20 } =
127             $holidays{ 2018, 2, 19 } =
128             $holidays{ 2019, 2, 18 } =
129             $holidays{ 2020, 2, 17 } =
130             $holidays{ 2021, 2, 15 } =
131             $holidays{ 2022, 2, 21 } =
132             $holidays{ 2023, 2, 20 } =
133             $holidays{ 2024, 2, 19 } =
134             $holidays{ 2025, 2, 17 } = "Washington's Birthday / Presidents Day";
135              
136             $holidays{ 1997, 5, 26 } =
137             $holidays{ 1998, 5, 25 } =
138             $holidays{ 1999, 5, 31 } =
139             $holidays{ 2000, 5, 29 } =
140             $holidays{ 2001, 5, 28 } =
141             $holidays{ 2002, 5, 27 } =
142             $holidays{ 2003, 5, 26 } =
143             $holidays{ 2004, 5, 31 } =
144             $holidays{ 2005, 5, 28 } =
145             $holidays{ 2006, 5, 29 } =
146             $holidays{ 2007, 5, 28 } =
147             $holidays{ 2008, 5, 26 } =
148             $holidays{ 2009, 5, 25 } =
149             $holidays{ 2010, 5, 31 } =
150             $holidays{ 2011, 5, 30 } =
151             $holidays{ 2012, 5, 28 } =
152             $holidays{ 2013, 5, 27 } =
153             $holidays{ 2014, 5, 26 } =
154             $holidays{ 2015, 5, 25 } =
155             $holidays{ 2016, 5, 30 } =
156             $holidays{ 2017, 5, 29 } =
157             $holidays{ 2018, 5, 28 } =
158             $holidays{ 2019, 5, 27 } =
159             $holidays{ 2020, 5, 25 } =
160             $holidays{ 2021, 5, 31 } =
161             $holidays{ 2022, 5, 30 } =
162             $holidays{ 2023, 5, 29 } =
163             $holidays{ 2024, 5, 27 } =
164             $holidays{ 2025, 5, 26 } = "Memorial Day";
165              
166             $holidays{ 1997, 7, 4 } =
167             $holidays{ 1998, 7, 5 } =
168             $holidays{ 1999, 7, 4 } =
169             $holidays{ 2000, 7, 4 } =
170             $holidays{ 2001, 7, 4 } =
171             $holidays{ 2002, 7, 4 } =
172             $holidays{ 2003, 7, 4 } =
173             $holidays{ 2004, 7, 5 } =
174             $holidays{ 2005, 7, 4 } =
175             $holidays{ 2006, 7, 4 } =
176             $holidays{ 2007, 7, 4 } =
177             $holidays{ 2008, 7, 4 } =
178             $holidays{ 2009, 7, 3 } =
179             $holidays{ 2010, 7, 5 } =
180             $holidays{ 2011, 7, 4 } =
181             $holidays{ 2012, 7, 4 } =
182             $holidays{ 2013, 7, 4 } =
183             $holidays{ 2014, 7, 4 } =
184             $holidays{ 2015, 7, 3 } =
185             $holidays{ 2016, 7, 4 } =
186             $holidays{ 2017, 7, 4 } =
187             $holidays{ 2018, 7, 4 } =
188             $holidays{ 2019, 7, 4 } =
189             $holidays{ 2020, 7, 3 } =
190             $holidays{ 2021, 7, 5 } =
191             $holidays{ 2022, 7, 4 } =
192             $holidays{ 2023, 7, 4 } =
193             $holidays{ 2024, 7, 4 } =
194             $holidays{ 2025, 7, 4 } = "Independence Day";
195              
196             $holidays{ 1997, 9, 1 } =
197             $holidays{ 1998, 9, 1 } =
198             $holidays{ 1999, 9, 6 } =
199             $holidays{ 2000, 9, 4 } =
200             $holidays{ 2001, 9, 3 } =
201             $holidays{ 2002, 9, 2 } =
202             $holidays{ 2003, 9, 1 } =
203             $holidays{ 2004, 9, 6 } =
204             $holidays{ 2005, 9, 5 } =
205             $holidays{ 2006, 9, 4 } =
206             $holidays{ 2007, 9, 3 } =
207             $holidays{ 2008, 9, 1 } =
208             $holidays{ 2009, 9, 7 } =
209             $holidays{ 2010, 9, 6 } =
210             $holidays{ 2011, 9, 5 } =
211             $holidays{ 2012, 9, 3 } =
212             $holidays{ 2013, 9, 2 } =
213             $holidays{ 2014, 9, 1 } =
214             $holidays{ 2015, 9, 7 } =
215             $holidays{ 2016, 9, 5 } =
216             $holidays{ 2017, 9, 4 } =
217             $holidays{ 2018, 9, 3 } =
218             $holidays{ 2019, 9, 2 } =
219             $holidays{ 2020, 9, 7 } =
220             $holidays{ 2021, 9, 6 } =
221             $holidays{ 2022, 9, 5 } =
222             $holidays{ 2023, 9, 4 } =
223             $holidays{ 2024, 9, 2 } =
224             $holidays{ 2025, 9, 1 } = "Labor Day";
225              
226             $holidays{ 1997, 10, 13 } =
227             $holidays{ 1998, 10, 13 } =
228             $holidays{ 1999, 10, 11 } =
229             $holidays{ 2000, 10, 9 } =
230             $holidays{ 2001, 10, 8 } =
231             $holidays{ 2002, 10, 14 } =
232             $holidays{ 2003, 10, 13 } =
233             $holidays{ 2004, 10, 11 } =
234             $holidays{ 2005, 10, 10 } =
235             $holidays{ 2006, 10, 9 } =
236             $holidays{ 2007, 10, 8 } =
237             $holidays{ 2008, 10, 13 } =
238             $holidays{ 2009, 10, 12 } =
239             $holidays{ 2010, 10, 11 } =
240             $holidays{ 2011, 10, 10 } =
241             $holidays{ 2012, 10, 8 } =
242             $holidays{ 2013, 10, 14 } =
243             $holidays{ 2014, 10, 13 } =
244             $holidays{ 2015, 10, 12 } =
245             $holidays{ 2016, 10, 10 } =
246             $holidays{ 2017, 10, 9 } =
247             $holidays{ 2018, 10, 8 } =
248             $holidays{ 2019, 10, 14 } =
249             $holidays{ 2020, 10, 12 } =
250             $holidays{ 2021, 10, 11 } =
251             $holidays{ 2022, 10, 10 } =
252             $holidays{ 2023, 10, 9 } =
253             $holidays{ 2024, 10, 14 } =
254             $holidays{ 2025, 10, 13 } = "Columbus Day";
255              
256             $holidays{ 1997, 11, 11 } =
257             $holidays{ 1998, 11, 11 } =
258             $holidays{ 1999, 11, 11 } =
259             $holidays{ 2000, 11, 10 } =
260             $holidays{ 2001, 11, 12 } =
261             $holidays{ 2002, 11, 11 } =
262             $holidays{ 2003, 11, 11 } =
263             $holidays{ 2004, 11, 11 } =
264             $holidays{ 2005, 11, 11 } =
265             $holidays{ 2006, 11, 10 } =
266             $holidays{ 2007, 11, 12 } =
267             $holidays{ 2008, 11, 11 } =
268             $holidays{ 2009, 11, 11 } =
269             $holidays{ 2010, 11, 11 } =
270             $holidays{ 2011, 11, 11 } =
271             $holidays{ 2012, 11, 12 } =
272             $holidays{ 2013, 11, 11 } =
273             $holidays{ 2014, 11, 11 } =
274             $holidays{ 2015, 11, 11 } =
275             $holidays{ 2016, 11, 11 } =
276             $holidays{ 2017, 11, 10 } =
277             $holidays{ 2018, 11, 12 } =
278             $holidays{ 2019, 11, 11 } =
279             $holidays{ 2020, 11, 11 } =
280             $holidays{ 2021, 11, 11 } =
281             $holidays{ 2022, 11, 11 } =
282             $holidays{ 2023, 11, 10 } =
283             $holidays{ 2024, 11, 11 } =
284             $holidays{ 2025, 11, 11 } = "Veterans Day";
285              
286             $holidays{ 1997, 11, 27 } =
287             $holidays{ 1998, 11, 27 } =
288             $holidays{ 1999, 11, 25 } =
289             $holidays{ 2000, 11, 23 } =
290             $holidays{ 2001, 11, 22 } =
291             $holidays{ 2002, 11, 28 } =
292             $holidays{ 2003, 11, 27 } =
293             $holidays{ 2004, 11, 25 } =
294             $holidays{ 2005, 11, 24 } =
295             $holidays{ 2006, 11, 23 } =
296             $holidays{ 2007, 11, 22 } =
297             $holidays{ 2008, 11, 27 } =
298             $holidays{ 2009, 11, 26 } =
299             $holidays{ 2010, 11, 25 } =
300             $holidays{ 2011, 11, 24 } =
301             $holidays{ 2012, 11, 22 } =
302             $holidays{ 2013, 11, 28 } =
303             $holidays{ 2014, 11, 27 } =
304             $holidays{ 2015, 11, 26 } =
305             $holidays{ 2016, 11, 24 } =
306             $holidays{ 2017, 11, 23 } =
307             $holidays{ 2018, 11, 22 } =
308             $holidays{ 2019, 11, 28 } =
309             $holidays{ 2020, 11, 26 } =
310             $holidays{ 2021, 11, 25 } =
311             $holidays{ 2022, 11, 24 } =
312             $holidays{ 2023, 11, 23 } =
313             $holidays{ 2024, 11, 28 } =
314             $holidays{ 2025, 11, 27 } = "Thanksgiving Day";
315              
316             $holidays{ 1997, 12, 25 } =
317             $holidays{ 1998, 12, 25 } =
318             $holidays{ 1999, 12, 24 } =
319             $holidays{ 2000, 12, 25 } =
320             $holidays{ 2001, 12, 25 } =
321             $holidays{ 2002, 12, 25 } =
322             $holidays{ 2003, 12, 25 } =
323             $holidays{ 2004, 12, 24 } =
324             $holidays{ 2005, 12, 26 } =
325             $holidays{ 2006, 12, 25 } =
326             $holidays{ 2007, 12, 25 } =
327             $holidays{ 2008, 12, 25 } =
328             $holidays{ 2009, 12, 25 } =
329             $holidays{ 2010, 12, 24 } =
330             $holidays{ 2011, 12, 26 } =
331             $holidays{ 2012, 12, 25 } =
332             $holidays{ 2013, 12, 25 } =
333             $holidays{ 2014, 12, 25 } =
334             $holidays{ 2015, 12, 25 } =
335             $holidays{ 2016, 12, 25 } =
336             $holidays{ 2017, 12, 25 } =
337             $holidays{ 2018, 12, 25 } =
338             $holidays{ 2019, 12, 25 } =
339             $holidays{ 2020, 12, 25 } =
340             $holidays{ 2021, 12, 24 } =
341             $holidays{ 2022, 12, 26 } =
342             $holidays{ 2023, 12, 25 } =
343             $holidays{ 2024, 12, 25 } =
344             $holidays{ 2025, 12, 25 } = "Christmas Day";
345              
346              
347             sub is_usfed_holiday {
348 2     2 1 754 my ($year, $month, $day) = @_;
349 2         13 return $holidays{ $year, $month, $day };
350             }
351              
352             1;
353             __END__
354             =head1 US Federal Holiday Data
355              
356             The holidays are listed on the US Government Office of Personnel Management
357             web site - http://www.opm.gov/Fedhol/
358              
359             =head1 CAVEATS
360              
361             The module current only contains US Federal holiday information for years 1997-2025.
362              
363             =head1 AUTHOR
364              
365             Doug Morris <dougmorris at mail d0t nih D0T gov >
366              
367             =head1 COPYRIGHT
368              
369             US government. All Rights Reserved.
370              
371             This program is free software; you can redistribute it and/or modify
372             it under the same terms as Perl itself.
373              
374             =head1 BUGS
375              
376             None known.
377              
378             Bugs should be reported to me via the CPAN RT system.
379             L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Date::Holidays::USFederal>.
380              
381             =head1 SEE ALSO
382              
383             L<Date::Holidays::UK>, L<Date::Japanese::Holiday>
384              
385             =cut