web-dev-qa-db-ja.com

iCalendar RRULE定期的なイベントのカスタム繰り返し

カスタムの繰り返しがある2つのイベントを作成しようとしていますが、コーディングがわかりません。

  1. 30日ごとに発生するイベントが必要ですが、30日目が週末の場合は、次の月曜日に移動したいと思います。 ただし元の30日間のサイクルを維持するためにも必要です。

  2. また、x曜日のx週間前に発生するイベントも必要です。たとえば、毎月15日の平日3日前に発生するイベントが欲しいです。

どんな助けも素晴らしいでしょう。

3
sevenomad

明確にするために、iCalendarを作成し、RRULEを使用する代わりに日付を明示的にリストするプログラムを作成することを意味しました。

オンラインのiCalクリエーターは何人かいますが、必要なルール、特に最初のルールの複雑さを処理できるとは思いません。

2番目の条件のRRULEを見つけるかもしれませんが、単純にプログラムを書く方が簡単だとわかりました。

全体的に、RRULEは素晴らしいツールですが、すべてを行うことはできません。場合によっては、自分で日付を指定するだけでよく、これにより、RRULEをサポートしていない可能性のある他のカレンダー形式を使用する柔軟性が高まります。

私は今書いた:

https://github.com/barrycarter/bcapps/blob/master/STACK/bc-blank-ical.pl

上記の日付ルールに従って、これらの空のiCalendarを作成しました。

http://oneoff.barrycarter.info/webapps-90641-1.ics

http://oneoff.barrycarter.info/webapps-90641-2.ics

重要な注意事項:

  • 必ず私の仕事をチェックしてください。カレンダーの日付が実際に希望する日付であることを確認してください。

  • 最初のルールでは、最初のイベントは2月1日であると任意に想定しました。プログラムを微調整して正しい日付を生成する必要があります(または、私に連絡してください(プロファイルを参照)。

  • 2番目のルールでは、2016年から2037年までのイベントを作成しました。

  • これらのカレンダーを使用するには、_SUMMARY_のすべてのインスタンスをイベントの実際の要約で検索/置き換え、_DESCRIPTION_のすべてのインスタンスを説明などで置き換えます。作成したカレンダーには、日付とランダムに生成されたUIDしかありません。

  • 各カレンダーのPRODIDも変更する必要があります。

私は個人的に反対しませんが、この質問が実際にwebappsに属しているかどうかはわかりません。既存のwebアプリケーションに関するものではないからです。

1
barrycarter

最初の例を挙げてください。たとえば、必要に応じて翌月に移動しますか?

2番目の場合、次のx = 2を指定することを提案します

RRULE:FREQ = MONTHLY; BYDAY = MO、TU、WE、TH、FR; BYMONTHDAY = 10,11,12; BYSETPOS = -1

ルールはそれが起こる可能性があると言うことです:

  • 15日の3日前、4日前、または5日前(BYMONTHDAY=10,11,12
    • 15日前の3日目が日曜日の場合は5日。
  • また、発生ルールは平日のみであると言いますBYDAY=MO,TU,WE,TH,FR
  • 1か月で可能なオプションのうちFREQ=MONTHLY;
  • 後のBYSETPOS=-1が必要です

例えば。:

  • 13日が金曜日の場合、ルールは13日を返します
  • 13日が土曜日の場合、ルールは12日を返します
  • 13日が日曜日の場合、ルールは11日を返します
0
Auberon Vacher