許多假期每年都會有所變動。例如,在加拿大維多利亞日(又名五月二至四周末)是五月二十五日前的星期一,或感恩節是十月的第二個星期一(在加拿大)。計算假期
我一直在使用的變化對這個Linq查詢得到一個假期的日期爲某一年:
var year = 2011;
var month = 10;
var dow = DayOfWeek.Monday;
var instance = 2;
var day = (from d in Enumerable.Range(1,DateTime.DaysInMonth(year,month))
let sample = new DateTime(year,month,d)
where sample.DayOfWeek == dow
select sample).Skip(instance-1).Take(1);
雖然這個工作的,是很容易理解,我可以想像有一個這種計算方式與這種蠻力方法相比更加優雅。
當然這不會觸及像復活節和許多其他月球日期的假期。
事實上,我所要做的就是 - 填充表格 - 它只是計算表格的值。 – 2010-12-22 18:39:53