特定のシリーズ内で、特定の暦月に隔週で発生するイベントの数を決定するための最も賢いアルゴリズムを探しています。
つまり、シリーズが「2010年10月7日から毎週第2木曜日」であるとすると、「イベント」が発生します(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( '2010年10月7日、'2010年11月')-> 2
NumberFortnightlyEventsInMonth( '2010年10月7日、'2010年12月')-> 3
10月には2つのイベントがあり、11月には2つのイベントがありますが、12月には3つのイベントがあることに注意してください。
擬似コードが望ましい。
ルックアップテーブルやWebサービスの呼び出し、またはユニバーサルライブラリ以外の外部リソースに依存したくありません。たとえば、ほとんどのプログラミング言語では、いくつかの日付操作関数が使用可能であると安全に想定できると思います。