注:次の回答は、非推奨のRFCでそれを行う方法を示しています!誰かが必要になった場合に備えて、参考のために残しておきます。より有用な事実については、適切な答えを参照してください。
これを行うには、日付に対応する平日がある年のみを表示する、対応する毎年繰り返される隣接する金曜日と隣接する月曜日のルールを追加します。
BEGIN:VEVENT
DTSTAMP:20130210T211949Z
UID:20130210-new-years-day-less-1@usa.gov
DTSTART;VALUE=DATE:20121231
DTEND;VALUE=DATE:20121231
SUMMARY:New Year’s Day (moved from a Saturday)
RRULE:FREQ=YEARLY;BYMONTH=12;BYMONTHDAY=31
EXRULE:FREQ=YEARLY;BYMONTH=12;BYMONTHDAY=31;BYDAY=MO,TU,WE,TH,SA,SU
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20130210T211949Z
UID:20130210-new-years-day-plus-1@usa.gov
DTSTART;VALUE=DATE:20130102
DTEND;VALUE=DATE:20130102
SUMMARY:New Year’s Day (moved from a Sunday)
RRULE:FREQ=YEARLY;BYMONTH=1;BYMONTHDAY=2
EXRULE:FREQ=YEARLY;BYMONTH=1;BYMONTHDAY=2;BYDAY=TU,WE,TH,FR,SA,SU
END:VEVENT
元のイベント(実際の休日をフィードに表示したくない場合は、同様にこれをフィルタリングできます)と一緒に、BYDAY=MO,TU,WE,TH,FR
休暇を移動する必要がなかった年に誤検知を取得することなく、すべての年をカバーします平日へ:
BEGIN:VEVENT
DTSTAMP:20130210T211949Z
UID:20130210-new-years-day@usa.gov
DTSTART;VALUE=DATE:20130101
DTEND;VALUE=DATE:20130101
SUMMARY:New Year’s Day
RRULE:FREQ=YEARLY;BYMONTH=1;BYMONTHDAY=1
END:VEVENT
Googleカレンダーは、私の例のiCalendarフィードを喜んで消費し、理解しています。現在のiCal(およびこのフィードをインポートしたGoogleカレンダーから同期されたiOSデバイス)は残念ながら少しバグがあり(バグ13188350 [リンクはおそらくレポーターに対してのみ機能します])、指定された平日フィルターを適用できません。
しかし、うまくいけば、それもすぐに修正されます。