{"id":2537,"date":"2019-08-29T14:01:35","date_gmt":"2019-08-29T13:01:35","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=2537"},"modified":"2019-08-29T14:01:36","modified_gmt":"2019-08-29T13:01:36","slug":"specialday-calculator","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/specialday-calculator\/","title":{"rendered":"Specialday calculator"},"content":{"rendered":"\n<p>Attentiondays<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class Specialday\n    {\n        public Specialday(string name, DateTime date, bool legalOmission = false)\n        {\n            Name = name;\n            Date = date;\n            LegalOmission = legalOmission;\n        }\n        public string Name { get; set; }\n        public DateTime Date { get; set; }\n        public bool LegalOmission { get; set; }\n    }\n\n    public class SpecialdayCalculator\n    {\n        public static IEnumerable&lt;int> EachYear(int fromYear, int toYear)\n        {\n            while (fromYear &lt;= toYear)\n            {\n                yield return fromYear++;\n            }\n        }\n\n        public IEnumerable&lt;Specialday> GetSpecialdays(int fromYear, int toYear)\n        {\n            foreach (var year in EachYear(fromYear, toYear))\n            {\n                foreach (var day in GetSpecialdays(year))\n                {\n                    yield return day;\n                }\n            }\n        }\n\n        public IEnumerable&lt;Specialday> GetSpecialdays(int year)\n        {\n            var specialdays = new List&lt;Specialday>\n            {\n                new Specialday(\"Nieuwjaarsdag\", new DateTime(year, 1, 1), true),\n                new Specialday(\"Bevrijdingsdag\", new DateTime(year, 5, 5)),\n                new Specialday(\"1e Kerstdag\", new DateTime(year, 12, 25), true),\n                new Specialday(\"2e Kerstdag\", new DateTime(year, 12, 26), true)\n            };\n\n            var kingsDate = new DateTime(year, 4, 27);\n            if (kingsDate.DayOfWeek == DayOfWeek.Sunday) kingsDate = kingsDate.AddDays(-1);\n            specialdays.Add(new Specialday(\"Koningsdag\", kingsDate, true));\n\n            var easterDate = GetEasterSunday(year);\n            specialdays.Add(new Specialday(\"Goede Vrijdag\", easterDate.AddDays(-2)));\n            specialdays.Add(new Specialday(\"1e Paasdag\", easterDate, true));\n            specialdays.Add(new Specialday(\"2e Paasdag\", easterDate.AddDays(1), true));\n\n            specialdays.Add(new Specialday(\"Hemelvaartsdag\", easterDate.AddDays(39), true));\n            specialdays.Add(new Specialday(\"1e Pinksterdag\", easterDate.AddDays(49), true)); \/\/ 10 dagen na hemelvaart\n            specialdays.Add(new Specialday(\"2e Pinksterdag\", easterDate.AddDays(50), true));\n\n            specialdays.Add(new Specialday(\"Oudjaarsdag\", new DateTime(year + 1, 1, 1).AddDays(-1)));\n            return specialdays.OrderBy(d => d.Date);\n        }\n\n        \/\/\/ &lt;summary>\n        \/\/\/ Hier snapt niemand wat van, maar we gaan er vanuit dat het werkt\n        \/\/\/ &lt;\/summary>\n        \/\/\/ &lt;param name=\"year\">&lt;\/param>\n        public static DateTime GetEasterSunday(int year)\n        {\n            int g = year % 19;\n            int c = year \/ 100;\n            int h = (c - c \/ 4 - (8 * c + 13) \/ 25 + 19 * g + 15) % 30;\n            int i = h - h \/ 28 * (1 - h \/ 28 * (29 \/ (h + 1)) * ((21 - g) \/ 11));\n            int day = i - ((year + year \/ 4 + i + 2 - c + c \/ 4) % 7) + 28;\n            int month = 3;\n            if (day > 31)\n            {\n                month++;\n                day -= 31;\n            }\n            return new DateTime(year, month, day);\n        }\n    }<\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Attentiondays<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2537","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/2537","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=2537"}],"version-history":[{"count":1,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/2537\/revisions"}],"predecessor-version":[{"id":2538,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/2537\/revisions\/2538"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=2537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=2537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=2537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}