問題タブ [rfc5545]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
icalendar - 展開するiCalendarRRuleからの発生の判別
私はRFC5545を読んでいて、一連のオカレンスを正しく見つける方法を決定しようとしています。毎週のルール=2(隔週)があるとしましょう。また、火、水、木にBYDAYルールパートを指定しました。開始日が2011-04-07(木)で、終了日が2011-04-27(水)であると仮定します。明らかに日付よりも重要度が低いことを無視すると、私のオカレンスセットには次のものが含まれると思います:2011-04-07、2011-04-12、2011-04-13、2011-04-21、2011-04-26、2011-04- 27。
私を失望させているのは、RFCからの次のステートメントです。「WKSTルールの部分は、平日が始まる日を指定します。有効な値は、MO、TU、WE、TH、FR、SA、およびSUです。 「RRULE」の間隔が1より大きく、BYDAYルール部分が指定されています。」
したがって、私のWKST = MOの場合、上記のステートメントから、週は開始日からではなく、WKSTから始まるという意味がわかります。つまり、開始日(この場合は木曜日)に基づく週を使用する代わりに、実際にWKSTから開始して、その週(月〜日)に含まれるオカレンスとそのWKSTから隔週のオカレンスを特定する必要があります。 。したがって、計算の目的で、私の開始日は実際には2011-04-04になります。それは開始日の前にあるので、私は開始日に先にジャンプしますが、私は月曜日と日曜日の週に固執します。つまり、私のオカレンスセットは実際には2011-04-07、2011-04-19、2011-04-20、2011-04-21です。それは私の元のセットとは大きく異なります。
さらに、これが適切な計算方法である場合、それは、1間隔を超える他の周波数のルール状況を拡張する場合にも、開始日ではなく、その期間の開始時に「開始」する必要があることを意味します。MONTHLYには、開始日の月の1日から最後の日が含まれますか。YEARLYには、開始日の1月1日から12月31日までが含まれますか?
そこにiCalendarの第一人者がいることを願っています...ここのロジックに頭を悩ませることはできません。ありがとう。
更新:いくつかの.icsファイルを作成し、Googleカレンダーにインポートしました。グーグルがこれらを正しく解釈していると仮定すると、INTERVAL> 1でMONTHLYを展開すると、イベントの開始日から始まる月ではなく、月の最初から最後の日が使用されることを確認できます。YEARLYルールは同じように機能し、年は1月1日から12月31日までです。私が当初期待していたことではありませんが、うまくいけば、これは他の誰かを助けることができます。
javascript - iCal形式を生成するJavascriptライブラリ?
iCal 形式を生成する JavaScript ライブラリがあるかどうかは誰にもわかりませんか? (RFC 5545 または RFC 2445 標準)
そのためのユーザー インターフェイスも提供するとよいでしょう。OWA 繰り返しウィンドウまたは Google カレンダーの繰り返しポップアップに似たもの。
ありがとうございました。
icalendar - iCalendar RRULEから発生日のリストを取得する方法
オカレンス用の RRULE を含む iCalendar ファイルがあります。特定の開始日と iCal ファイルの RRULE に従って、イベントが発生する日付のリストを取得する方法。
Java で、開始日と RRULE を取り、発生日のリストを返すメソッドを書きたいと思います。簡単な解決策や指示を手伝ってください。
icalendar - iCalendar で期間を除外する
「毎週月曜日9時から5時」という非常に単純なイベントと、このイベントが行われない時間帯があります。2011 年 7 月 8 日から 2011 年 10 月 24 日まで。これをiCalendarで表現する最良の方法は何ですか?
多くのEXDATE?特別なEXRULE?
java - ICal4j の繰り返しルール
ICal4j.ics
を使用してファイルを作成しようとしています。
しかし、繰り返しを追加しようとすると失敗し、次のものがスローされます。ValidationException
繰り返しを追加する私のコードは次のとおりです。
このルールがなくても問題なく動作しますが、このイベントを毎週月曜日( が返す日付)
まで追加したいと考えています。何か案は?12 December 2011
dateTo
php - PHP で生成された iCalendar フィードを iCal がキャッシュしないようにすることはできますか?
RFC 5545 に準拠して、PHP で動的に生成された iCalendar フィードを作成しました。iCal (つまり、Mac OS X の組み込みのカレンダー プログラム) が、以前にダウンロードしたイベントの更新を反映することを拒否しているように見えることを除いて、ほとんどの部分で問題なく動作しています。 . これはキャッシングによるものだと思います。フィードをキャッシュしないように iCal に指示する方法はありますか?
編集:そうそう、フィードが呼び出されるたびに各 VEVENT に異なる UID を持たせることを既に試みたことを忘れていました (私の UID 形式は「id」です。RFC 5545 の DATE-TIME 形式の現在の時刻は、データベース内のイベントの一意の ID です)。また、ヘッダーの Content-type で遊んでみました。この問題は、テキスト/プレーンまたはテキスト/カレンダーに設定した場合に発生します
mysql - 定期的なイベント、SQLクエリ
定期的なイベントに関する質問が一般的であることは承知していますが、カレンダーアプリに関する質問以外に、定期的なイベントに関するこの特定の質問に対する回答を見つけることができませんでした。主な違いは、アプリ内のイベントです。多くの点で非常に似ていますが、カレンダーに関連する手荷物が少ないだけで、レポートまたはカレンダー形式ではなく単独でのみ表示されます。
カレンダーアプリと同じように。イベントは、1回限りの場合もあれば、毎週木曜日または毎月第1月曜日に、将来の事前設定された時間まで繰り返し発生する場合もあります。
イベントは、開始日と終了日、および「再通貨タイプID」を含むイベントテーブルに保存されます。「再通貨タイプ」が「なし」の場合、開始日と終了日は同じになります。イベントテーブルは、イベントタイプ名を保持する別のテーブルへのIDを保持します。例:「会議」または「週次レポート」
'再利用タイプ'例'再発なし'、'毎週月曜日'、'月の最初の月曜日'および'月の最後の土曜日'のリストを含む別の表があります。
検索を簡単にするために、別のテーブルには、1960年から2060年までの日付のリストと、月曜日かどうか、月曜日のどの月曜日であるかなど、各日付に関する関連情報が含まれています。
これにより、次のようなルックアップが可能になります。
これは、繰り返し発生するイベントを見つけるために必要なものであり、次のような出力を提供します。
繰り返し発生するイベントを取得しないようにするには、より単純なクエリを使用できます。
私の質問は、これらのクエリを組み合わせて、日付順に定期的および非定期的の両方のすべてのイベントを含む1つのリストを作成するにはどうすればよいですか?
これらはテーブルとそれらからの短縮された選択であり、簡潔にするために一部の列とすべてのインデックスが削除されています:)。同じ理由で、「names」テーブルは含まれていません。
上記のコードやテーブルレイアウトを使用することに完全に固執しているわけではありません。実用的なソリューションを歓迎します。私を次の方向に向けないでください。
カレンダーアプリケーションで定期的なイベントをモデル化するための最良の方法は何ですか?
カレンダーアプリを作成するときに、データベースに日付または繰り返しルールを保存する必要がありますか?
また
https://www.rfc-editor.org/rfc/rfc5545
私はそれらをチェックアウトしました、そしてそれらは非常に役に立ちましたが、私たちが意図したように同じことをしていませんでした。
TIA
icalendar - iCal ファイルの変更の検出
私は、Google カレンダー (または他の iCal ベースのサービス) にプラグインしてイベント リマインダーを表示する小さなデスクトップ アプリケーションを作成しています。iCal ファイルが頻繁に自動的に再ダウンロードされます。ファイルのチェックサムが変更された場合は、現在の予定のキャッシュを破棄し、カレンダーを再解析します。
問題は、これは Google カレンダー ファイルでは機能しないということです。さらに調べてみると、特定のカレンダーに関連付けられた iCal ファイルを再ダウンロードするたびに、すべてのイベントのDTSTAMP:
プロパティが変更されていることがわかりました。したがって、標準のチェックサムはここに行く方法ではないかもしれません。私が考えている主な解決策は2つあります。
- 元のファイルに基づいて、
DTSTAMP:
行が破棄されたチェックサムを計算します。(汚れた) - カレンダーのどのセクションが新しいか、破棄されたか、変更されたかなどを検出する完全なカレンダー差分アルゴリズムの実装(高価)
iCal 形式に、まだ発見していない癖があるかどうかはわかりません。そのため、方法 1 で問題が解決するかどうかはわかりません。限られたテストでは、そうであることが示されているようです。一方、方法 2 は、CPU パワーの点で不必要にコストがかかるように見えます。
何を提案しますか?
icalendar - iCalendar(RFC5545)の繰り返しルールを1日に複数回
RFC5545で指定されているRRULEを使用して、イベントを1日に複数回発生させるにはどうすればよいですか?
隔週の月曜日と金曜日の午前11時と午後18時にイベントを開催したいとします。RRULEを次のようにフォーマットすることは可能ですか?
RRULE:FREQ = WEEKLY; INTERVAL = 2; BYDAY = MO、FR; [TIMES = 110000,180000]
ありがとう
c# - カレンダーの日付の繰り返しのために文字列を保存および解析するための標準はありますか?
定期的なイベント情報をデータベースに保存しようとしています。次のフィールドを持つデータベーステーブルにレコーダーを保存したいと思います。
- 開始日 - 日時
- 終了日 - DateTime
- RecurrencePattern - 文字列
RecurrencePattern を格納する標準形式と、この文字列 recurrenPattern と開始日/終了日を解析して一連の日付に変換する関連ライブラリが既に存在するかどうかを確認したかったのです。これはjavascript用に存在するので、C#または同様のものへの移植でしょうか?
イベントをデータベースにシリアル化するには、新しい iCalendar を作成し、イベントごとにカレンダーをシリアル化する必要がありますか? このライブラリを使用して、イベント自体をデータベースに単純にシリアル化する方法はありますか?
Jon Skeet の回答に従って、DDay.iCal に関する質問を更新しました。
jon skeet の提案に従って、私は DDay.iCal を見始めましたが、とても良さそうです。私の 1 つのフォローアップの質問は、この例ではディスクから一度に完全な ical (ics) しか読み取らないように見えるということです。私の場合、イベントをデータベース テーブルに個別に格納しているだけです。最善の方法は何でしょう:
- これらのイベントを DB から読み込むには
- 独立したイベントを DB に保存するには (各イベントは db テーブルの行です)
このライブラリを使用していますか?