31 {
32 Weekday w = date.weekday();
33 Day d = date.dayOfMonth(), dd = date.dayOfYear();
34 Month m = date.month();
35 Year y = date.year();
36 Day em = easterMonday(y);
37 Day laborDay = Date(1, May, y).dayOfYear();
38
39 if (isWeekend(w)
40
41 || (d == 1 && m == January)
42
43 || (d == 6 && m == January)
44
45 || (dd == em - 49)
46
47 || (dd == em - 3)
48
49 || (dd == em)
50
51 || (m == Mar && d == 25)
52
53 || (m == May && ((d == 1) || ((w==Tuesday) && (d<=5) && (em-3 <= laborDay && laborDay <= em))))
54
55 || (dd == em + 49)
56
57 || (m == August && d == 15)
58
59 || (m == October && d == 28)
60
61 || (m == December && d == 25)
62
63 || (m == December && d == 26))
64 return false;
65 return true;
66}