-
Notifications
You must be signed in to change notification settings - Fork 31
Expand file tree
/
Copy pathUSFederalHolidays.html
More file actions
95 lines (90 loc) · 14.8 KB
/
Copy pathUSFederalHolidays.html
File metadata and controls
95 lines (90 loc) · 14.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>US Federal Holiday Detection
</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://code.jquery.com/jquery-1.8.0.js"></script>
<script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-combined.min.css" rel="stylesheet">
<link type="text/css" rel="stylesheet" href="fsxfmt/style.css" />
<script type="text/javascript" src="fsxfmt/tips.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<div class="span9" id="main">
<h1>US Federal Holiday Detection</h1>
<p>Here's how to determine whether a date is a US federal holiday using F#.
You probably want to curry the first two boolean parameters with the appropriate settings
(some departments observe Sunday holidays on Monday, and some observe Saturday holidays on Friday).</p>
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l"> 1: </span>
<span class="l"> 2: </span>
<span class="l"> 3: </span>
<span class="l"> 4: </span>
<span class="l"> 5: </span>
<span class="l"> 6: </span>
<span class="l"> 7: </span>
<span class="l"> 8: </span>
<span class="l"> 9: </span>
<span class="l">10: </span>
<span class="l">11: </span>
<span class="l">12: </span>
<span class="l">13: </span>
<span class="l">14: </span>
<span class="l">15: </span>
<span class="l">16: </span>
<span class="l">17: </span>
<span class="l">18: </span>
<span class="l">19: </span>
<span class="l">20: </span>
<span class="l">21: </span>
<span class="l">22: </span>
<span class="l">23: </span>
</pre></td>
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="k">open</span> <span onmouseout="hideTip(event, 'fs1', 1)" onmouseover="showTip(event, 'fs1', 1)" class="i">System</span>
<span class="k">let</span> <span onmouseout="hideTip(event, 'fs2', 2)" onmouseover="showTip(event, 'fs2', 2)" class="f">getHoliday</span> <span onmouseout="hideTip(event, 'fs3', 3)" onmouseover="showTip(event, 'fs3', 3)" class="i">sunToMon</span> <span onmouseout="hideTip(event, 'fs4', 4)" onmouseover="showTip(event, 'fs4', 4)" class="i">satToFri</span> (<span onmouseout="hideTip(event, 'fs5', 5)" onmouseover="showTip(event, 'fs5', 5)" class="i">date</span><span class="o">:</span><span onmouseout="hideTip(event, 'fs6', 6)" onmouseover="showTip(event, 'fs6', 6)" class="t">DateTime</span>) <span class="o">=</span>
<span class="k">match</span> <span onmouseout="hideTip(event, 'fs5', 7)" onmouseover="showTip(event, 'fs5', 7)" class="i">date</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs7', 8)" onmouseover="showTip(event, 'fs7', 8)" class="i">Month</span>, <span onmouseout="hideTip(event, 'fs5', 9)" onmouseover="showTip(event, 'fs5', 9)" class="i">date</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs8', 10)" onmouseover="showTip(event, 'fs8', 10)" class="i">Day</span>, (<span onmouseout="hideTip(event, 'fs5', 11)" onmouseover="showTip(event, 'fs5', 11)" class="i">date</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs8', 12)" onmouseover="showTip(event, 'fs8', 12)" class="i">Day</span><span class="o">-</span><span class="n">1</span>)<span class="o">/</span><span class="n">7</span><span class="o">+</span><span class="n">1</span>, <span onmouseout="hideTip(event, 'fs5', 13)" onmouseover="showTip(event, 'fs5', 13)" class="i">date</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs9', 14)" onmouseover="showTip(event, 'fs9', 14)" class="i">DayOfWeek</span> <span class="k">with</span>
| <span class="n">1</span>, <span class="n">1</span>, _, _ <span class="k">-></span> <span class="s">"New Year's Day"</span>
| <span class="n">1</span>, <span class="n">2</span>, _, <span onmouseout="hideTip(event, 'fs10', 15)" onmouseover="showTip(event, 'fs10', 15)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs11', 16)" onmouseover="showTip(event, 'fs11', 16)" class="i">Monday</span> <span class="k">when</span> <span onmouseout="hideTip(event, 'fs3', 17)" onmouseover="showTip(event, 'fs3', 17)" class="i">sunToMon</span> <span class="k">-></span> <span class="s">"New Year's Day (observed)"</span>
| <span class="n">1</span>, _, <span class="n">3</span>, <span onmouseout="hideTip(event, 'fs10', 18)" onmouseover="showTip(event, 'fs10', 18)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs11', 19)" onmouseover="showTip(event, 'fs11', 19)" class="i">Monday</span> <span class="k">-></span> <span class="s">"Martin Luther King, Jr. Day"</span>
| <span class="n">2</span>, _, <span class="n">3</span>, <span onmouseout="hideTip(event, 'fs10', 20)" onmouseover="showTip(event, 'fs10', 20)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs11', 21)" onmouseover="showTip(event, 'fs11', 21)" class="i">Monday</span> <span class="k">-></span> <span class="s">"Presidents Day"</span>
| <span class="n">5</span>, <span onmouseout="hideTip(event, 'fs12', 22)" onmouseover="showTip(event, 'fs12', 22)" class="i">d</span>, _, <span onmouseout="hideTip(event, 'fs10', 23)" onmouseover="showTip(event, 'fs10', 23)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs11', 24)" onmouseover="showTip(event, 'fs11', 24)" class="i">Monday</span> <span class="k">when</span> <span onmouseout="hideTip(event, 'fs12', 25)" onmouseover="showTip(event, 'fs12', 25)" class="i">d</span> <span class="o">></span><span class="o">=</span> <span class="n">25</span> <span class="k">-></span> <span class="s">"Memorial Day"</span> <span class="c">// active pattern matching!</span>
| <span class="n">7</span>, <span class="n">3</span>, _, <span onmouseout="hideTip(event, 'fs10', 26)" onmouseover="showTip(event, 'fs10', 26)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs13', 27)" onmouseover="showTip(event, 'fs13', 27)" class="i">Friday</span> <span class="k">when</span> <span onmouseout="hideTip(event, 'fs4', 28)" onmouseover="showTip(event, 'fs4', 28)" class="i">satToFri</span> <span class="k">-></span> <span class="s">"Independence Day (observed)"</span>
| <span class="n">7</span>, <span class="n">4</span>, _, _ <span class="k">-></span> <span class="s">"Independence Day"</span>
| <span class="n">7</span>, <span class="n">5</span>, _, <span onmouseout="hideTip(event, 'fs10', 29)" onmouseover="showTip(event, 'fs10', 29)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs11', 30)" onmouseover="showTip(event, 'fs11', 30)" class="i">Monday</span> <span class="k">when</span> <span onmouseout="hideTip(event, 'fs3', 31)" onmouseover="showTip(event, 'fs3', 31)" class="i">sunToMon</span> <span class="k">-></span> <span class="s">"Independence Day (observed)"</span>
| <span class="n">9</span>, _, <span class="n">1</span>, <span onmouseout="hideTip(event, 'fs10', 32)" onmouseover="showTip(event, 'fs10', 32)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs11', 33)" onmouseover="showTip(event, 'fs11', 33)" class="i">Monday</span> <span class="k">-></span> <span class="s">"Labor Day"</span>
| <span class="n">10</span>, _, <span class="n">2</span>, <span onmouseout="hideTip(event, 'fs10', 34)" onmouseover="showTip(event, 'fs10', 34)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs11', 35)" onmouseover="showTip(event, 'fs11', 35)" class="i">Monday</span> <span class="k">-></span> <span class="s">"Columbus Day"</span>
| <span class="n">11</span>, <span class="n">10</span>, _, <span onmouseout="hideTip(event, 'fs10', 36)" onmouseover="showTip(event, 'fs10', 36)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs13', 37)" onmouseover="showTip(event, 'fs13', 37)" class="i">Friday</span> <span class="k">when</span> <span onmouseout="hideTip(event, 'fs4', 38)" onmouseover="showTip(event, 'fs4', 38)" class="i">satToFri</span> <span class="k">-></span> <span class="s">"Veterans Day (observed)"</span>
| <span class="n">11</span>, <span class="n">11</span>, _, _ <span class="k">-></span> <span class="s">"Veterans Day"</span>
| <span class="n">11</span>, <span class="n">12</span>, _, <span onmouseout="hideTip(event, 'fs10', 39)" onmouseover="showTip(event, 'fs10', 39)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs11', 40)" onmouseover="showTip(event, 'fs11', 40)" class="i">Monday</span> <span class="k">when</span> <span onmouseout="hideTip(event, 'fs3', 41)" onmouseover="showTip(event, 'fs3', 41)" class="i">sunToMon</span> <span class="k">-></span> <span class="s">"Veterans Day (observed)"</span>
| <span class="n">11</span>, _, <span class="n">4</span>, <span onmouseout="hideTip(event, 'fs10', 42)" onmouseover="showTip(event, 'fs10', 42)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs14', 43)" onmouseover="showTip(event, 'fs14', 43)" class="i">Thursday</span> <span class="k">-></span> <span class="s">"Thanksgiving Day"</span>
| <span class="n">12</span>, <span class="n">24</span>, _, <span onmouseout="hideTip(event, 'fs10', 44)" onmouseover="showTip(event, 'fs10', 44)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs13', 45)" onmouseover="showTip(event, 'fs13', 45)" class="i">Friday</span> <span class="k">when</span> <span onmouseout="hideTip(event, 'fs4', 46)" onmouseover="showTip(event, 'fs4', 46)" class="i">satToFri</span> <span class="k">-></span> <span class="s">"Christmas Day (observed)"</span>
| <span class="n">12</span>, <span class="n">25</span>, _, _ <span class="k">-></span> <span class="s">"Christmas Day"</span>
| <span class="n">12</span>, <span class="n">26</span>, _, <span onmouseout="hideTip(event, 'fs10', 47)" onmouseover="showTip(event, 'fs10', 47)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs11', 48)" onmouseover="showTip(event, 'fs11', 48)" class="i">Monday</span> <span class="k">when</span> <span onmouseout="hideTip(event, 'fs3', 49)" onmouseover="showTip(event, 'fs3', 49)" class="i">sunToMon</span> <span class="k">-></span> <span class="s">"Christmas Day (observed)"</span>
| <span class="n">12</span>, <span class="n">31</span>, _, <span onmouseout="hideTip(event, 'fs10', 50)" onmouseover="showTip(event, 'fs10', 50)" class="t">DayOfWeek</span><span class="o">.</span><span onmouseout="hideTip(event, 'fs13', 51)" onmouseover="showTip(event, 'fs13', 51)" class="i">Friday</span> <span class="k">when</span> <span onmouseout="hideTip(event, 'fs4', 52)" onmouseover="showTip(event, 'fs4', 52)" class="i">satToFri</span> <span class="k">-></span> <span class="s">"New Year's Day (observed)"</span>
| _ <span class="k">-></span> <span class="k">null</span>
</code></pre></td>
</tr>
</table>
</div>
</div>
</div>
<div class="tip" id="fs1">namespace System</div>
<div class="tip" id="fs2">val getHoliday : sunToMon:bool -> satToFri:bool -> date:DateTime -> string<br /><br />Full name: USFederalHolidays.getHoliday</div>
<div class="tip" id="fs3">val sunToMon : bool</div>
<div class="tip" id="fs4">val satToFri : bool</div>
<div class="tip" id="fs5">val date : DateTime</div>
<div class="tip" id="fs6">Multiple items<br />type DateTime =<br />  struct<br />    new : ticks:int64 -> DateTime + 10 overloads<br />    member Add : value:TimeSpan -> DateTime<br />    member AddDays : value:float -> DateTime<br />    member AddHours : value:float -> DateTime<br />    member AddMilliseconds : value:float -> DateTime<br />    member AddMinutes : value:float -> DateTime<br />    member AddMonths : months:int -> DateTime<br />    member AddSeconds : value:float -> DateTime<br />    member AddTicks : value:int64 -> DateTime<br />    member AddYears : value:int -> DateTime<br />    ...<br />  end<br /><br />Full name: System.DateTime<br /><br />--------------------<br />DateTime()<br />   <em>(+0 other overloads)</em><br />DateTime(ticks: int64) : unit<br />   <em>(+0 other overloads)</em><br />DateTime(ticks: int64, kind: DateTimeKind) : unit<br />   <em>(+0 other overloads)</em><br />DateTime(year: int, month: int, day: int) : unit<br />   <em>(+0 other overloads)</em><br />DateTime(year: int, month: int, day: int, calendar: Globalization.Calendar) : unit<br />   <em>(+0 other overloads)</em><br />DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : unit<br />   <em>(+0 other overloads)</em><br />DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: DateTimeKind) : unit<br />   <em>(+0 other overloads)</em><br />DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: Globalization.Calendar) : unit<br />   <em>(+0 other overloads)</em><br />DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int) : unit<br />   <em>(+0 other overloads)</em><br />DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int, kind: DateTimeKind) : unit<br />   <em>(+0 other overloads)</em></div>
<div class="tip" id="fs7">property DateTime.Month: int</div>
<div class="tip" id="fs8">property DateTime.Day: int</div>
<div class="tip" id="fs9">property DateTime.DayOfWeek: DayOfWeek</div>
<div class="tip" id="fs10">type DayOfWeek =<br />  | Sunday = 0<br />  | Monday = 1<br />  | Tuesday = 2<br />  | Wednesday = 3<br />  | Thursday = 4<br />  | Friday = 5<br />  | Saturday = 6<br /><br />Full name: System.DayOfWeek</div>
<div class="tip" id="fs11">field DayOfWeek.Monday = 1</div>
<div class="tip" id="fs12">val d : int</div>
<div class="tip" id="fs13">field DayOfWeek.Friday = 5</div>
<div class="tip" id="fs14">field DayOfWeek.Thursday = 4</div>
</body>
</html>