我正在寻找最聪明的算法来确定特定系列中给定日历月中每两周发生的事件的数量。
即鉴于该系列是“从 2010 年 10 月 7 日起的每个第二个星期四”,“事件”正在发生(2010 年 10 月 7 日、10 月 21 日、11 月 4 日、11 月 18 日、12 月 2 日、12 月 16 日、12 月 30 日……)
所以我追求的是一个功能
function(seriesDefinition, month) -> integer
where:
- seriesDefinition is some date that is a valid date in the series,
- month indicates a month and a year
这样它就可以准确地产生: numberFortnightlyEventsInSeriesThatFallInCalendarMonth
例子:
NumberFortnightlyEventsInMonth('2010 年 10 月 7 日,'2010 年 10 月') -> 2
NumberFortnightlyEventsInMonth('7 Oct 2010, 'Nov2010') -> 2
NumberFortnightlyEventsInMonth('2010 年 10 月 7 日,'2010 年 12 月')-> 3
请注意,10 月有 2 个事件,11 月有 2 个事件,但 12 月有 3 个事件。
首选伪代码。
除了潜在的通用库之外,我不想依赖查找表或 Web 服务调用或任何其他外部资源。例如,我认为我们可以有把握地假设大多数编程语言都有一些可用的日期操作函数。