日時

RRULEビルダー · 文字列から実際の予定日へ

開始日時とタイムゾーンを決め、繰り返し条件や既存ルールから発生日を確認します。

RRULEビルダー

繰り返し条件

BYDAYはMO,WEや2TU,-1FR。序数は月・年単位のみ。BYMONTHDAYは−31…−1、1…31、BYMONTHは1…12、BYSETPOSは−366…−1、1…366で他のBY条件が必要です。複数値はカンマ区切り、空欄の条件は省略します。

ルールと日付プレビュー

入力はこのブラウザー内で処理され、サーバーには送信されません。

オプション

開始日時は秒まで含むローカルISO形式(2026-09-14T09:00:00)。UNTILはZ付きのUTC日時です。DTSTART自体が繰り返し条件に一致する必要があります。

夏時間で欠ける時刻は移行前のオフセットで解釈し、実際の時刻を表示します。重複時刻は最初のものを採用し、存在しない日付は飛ばします。

日・週・月・年単位のみ。入力8,192 UTF-16単位、除外100件、COUNTは10,000まで。プレビューは1〜1,000件、DTSTARTから10年以内かつ2099年まで。5秒で計算を中止します。

入力または設定が変更されました。結果を更新してからエクスポートしてください。

隔週の定例会、毎月末の締め処理、予定を1回だけ取り消す場面では、同じ「繰り返し」でも必要な条件が違います。RRULEビルダーなら、開始日時が条件に合っているか、短い月を飛ばすかを日付プレビューで確認できます。

定期イベントを手作業で並べる前に、繰り返しルールを一つの条件として確かめましょう。RRULE生成と解析の入力は別々に残り、プレビューは現在時刻ではなくDTSTARTから始まります。

RRULEビルダーで日付を確かめる理由

31日と月末を区別する

RRULEビルダーは意図の違いを保持します。BYMONTHDAY=31は31日のない月を飛ばし、BYMONTHDAY=-1は毎月の末日を選びます。2月の結果を見るだけでも、固定日と締め日のどちらを指定したか分かります。

31日を固定する日付列は短い月を飛ばし、月末の日付列は各月の最後の日を残している比較。

除外しても回数を補充しない

COUNTで元の系列を制限した後、EXDATEが一致する時刻を取り除きます。5回の予定から1回除外すれば残りは4回です。末尾に新しい予定を加えることはなく、結果に除外件数を表示します。

5つの発生マーカーの一つを取り消し、追加のマーカーなしで4つを残した図。

開始日時と条件をそろえる

01

一致する開始日を選ぶ

プリセットはルールに合うDTSTARTを含みます。月曜から第2火曜へ変更したら開始日も見直してください。モードを切り替えてもフォームと解析テキストは互いを上書きしません。

02

現地の繰り返しとUTCの終了を分ける

開始と除外は選択したIANAタイムゾーンの日時を秒まで入力します。UNTILだけはZ付きのUTCです。入力にDTSTARTがあれば補助欄より優先され、有効な設定を結果に表示します。

03

停止理由を見てから保存する

自動計算は350 ms待って更新します。オフにすると実行ボタンとCtrl/Cmd+Enterが使えます。変更後の古い結果は書き出せません。表示は50件ずつですが、レポートとJSONには計算済み全件が含まれます。

日付を決める条件を読み解く

間隔と週の境界

日・週・月・年に対するINTERVALを指定できます。BYDAYは曜日コードを使い、月と年では序数も指定できます。WKSTは週の始まりで、隔週の予定日が変わることがあります。

候補から最後の平日を選ぶ

BYMONTHは月、BYMONTHDAYは月初または月末から数える日です。BYSETPOSはその周期内の候補の位置を選びます。月〜金と-1の組み合わせは最後の平日を選びますが、祝日は考慮しません。

開始の文脈を断片に残す

単独ルールには画面の開始日時とタイムゾーンを使います。明示したDTSTARTにはZかTZIDが必要です。正規化した断片にも開始の情報を残すため、条件だけが切り離されるのを防げます。

現地時刻とUTCを並べる

各行に現地時刻、UTCオフセット、UTCの瞬間を表示します。夏時間の欠落で時刻が動いた場合は元の指定も示します。通常の午前9時の定例会は現地の時刻を保ち、UTC側が変わります。

対応する形式と計算範囲

予定ファイル全体は扱わない
DTSTART、1つのRRULE、最大100件のEXDATEに対応します。VEVENT、VCALENDAR、RDATE、EXRULE、拡張項目、終日DATE、明示的な浮動日時は拒否します。保存する.txtは断片であり、完全なICSではありません。
日単位以上の条件に限定
秒・分・時間単位の頻度やBYHOUR、BYMINUTE、BYSECOND、BYYEARDAY、BYWEEKNOには対応しません。時刻はDTSTARTから取ります。不明な項目を黙って捨てることはありません。
開始と終了を矛盾させない
DTSTART自体が条件に一致する必要があります。COUNTは1〜10,000でUNTILと併用できません。UNTILは開始以降のUTC日時で、終了の瞬間に一致する予定も含みます。
存在しない日と時刻は別に扱う
存在しない日付は飛ばしてCOUNTにも含めません。夏時間の欠落はRFC 5545の確認済み正誤表4271に従い、移行前のオフセットで解釈します。重複時刻は最初を採用し、時差はブラウザーのデータに従います。
除外は正確な瞬間を指定
EXDATEはDTSTART自身も除外できますが、1日全体を削除したり回数を補ったりはしません。同じ除外値はまとめます。祝日の回避や振替予定の作成は対応範囲外です。
有限のプレビュー
入力は8,192 UTF-16単位まで。開始年は1970〜2099年で、最大1,000件、DTSTARTから10年以内かつ2099年までを調べます。5秒で中止し、件数到達・系列終了・検索期限到達を区別します。

RRULEビルダーのよくある質問

RRULEと予定を手動で繰り返し登録する方法はどう違いますか?

RRULEは個別の予定一覧ではなく、発生日を求める条件です。開始日時や除外を含めて同じ系列を扱えます。このツールでは日付を確認できますが、カレンダーへの登録は行いません。

特定の日付を除外するにはどうしますか?

EXDATEをRRULEとは別の行に記述します。フォームなら選択した地域の日時を1行に1件入力します。解析ではZかTZIDを付け、生成した断片の除外はUTCで表します。

夏時間は繰り返し予定に影響しますか?

指定地域の現地時刻を基準に各日を解釈するため、UTCの時刻が変わります。欠けた時計の時刻は移行前のオフセットを使い、時計が戻って重なる時間は最初の瞬間を採用します。

毎月31日、なければ近い日にできますか?

BYMONTHDAY=31は短い月を飛ばします。毎月末が目的ならBYMONTHDAY=-1を使ってください。指定日の近くへ自動移動すると意味が変わるので、その補正は行いません。

UNTILで終了日時を指定する書式は何ですか?

フォームでは2026-12-31T23:59:59ZのようなUTCのISO日時を入力します。RRULEの値では20261231T235959Zのように区切りを除きます。COUNTとの併用や開始以前の終了はエラーです。

実行日時が予想と違いますか?

次の繰り返しを確認する

RRULEビルダーで開始、終了、除外と実際の日付をまとめて確認しましょう。意図した予定になってから、日付の文脈を含む断片を保存できます。