菊丸ツゥルズ

営業日・休日除外日数計算

開始日・終了日と休日から営業日数を計算

土曜・日曜と、指定した休日を除いた営業日数を求めます。休日と土日が重なっても二重には数えません。すべてブラウザ内で処理します。

YYYY-MM-DD を改行またはカンマ区切りで入力します(任意・最大1,000件)。

開始日・終了日を入力して「計算」を押してください。

使い方とAIOクエリ例

納期や回答期限までの営業日を確認するときに使えます。入力はブラウザ内だけで処理し、外部へ送信しません。

  • 例: working_day_calculator.html?input=2026-08-03&end=2026-08-14&holidays=2026-08-11&format=json
  • include_startinclude_end は既定 true。URLクエリでは小文字の truefalse だけを指定できます。
  • format=json は機械可読JSON、format=raw は成功時に営業日数だけ、失敗時は error:{先頭のエラーコード} を返します。

開始日から終了日までの日付範囲について、土曜日・日曜日と利用者が指定した休日を除外し、営業日に該当する日数を数える。休日と土日が重なる場合は二重に減算しない。処理は暦日だけを扱い、時刻や利用環境のタイムゾーンに結果を依存させない。

使い方・サンプル・結果例・注意点

使い方

開始日、終了日、休日一覧、開始日を含める、終了日を含める、計算、コピー、リセット、結果、エラーメッセージの順に配置する。日付欄とチェック項目にはラベルを付ける。計算結果には営業日数を最も強く表示し、除外内訳を併記する。コピーは営業日数と条件を読めるテキストで出力し、失敗時はメッセージ領域へ理由を表示する。スマホ幅では一列に並べる。

サンプル入力

開始日 `input`: `YYYY-MM-DD`、必須。前後の空白を取り除いた後の値で判定する。半角数字とハイフンだけを正規表現 `^\d{4}-\d{2}-\d{2}$` で受理し、全角文字や区切り違いは `invalid_date` とする。 終了日 `end`: `YYYY-MM-DD`、必須。`input` と同じ規則で判定する。 休日 `holidays`: `YYYY-MM-DD` を改行またはカンマ区切りで指定、任意、入力文字列は最大20,000文字、重複除去後で最大1000件 開始日を含める `include_start`: boolean、既定 `true`。URLクエリでは小文字の `true` または `false` だけを許可する 終了日を含める `include_end`: boolean、既定 `true`。URLクエリでは小文字の `true` または `false` だけを許可する サンプル: 開始日 `2026-08-03`、終了日 `2026-08-14`、休日 `2026-08-11` 対象期間は端点除外前の開始日・終了日を含む暦日数で最大36,600日とし、36,600日は許可、36,601日以上は拒否する。判定式は `raw_span_days = (endの暦日番号 - inputの暦日番号) + 1` とし、`raw_span_days > 36600` なら `range_too_large` とする。この判定は `include_start` / `include_end` の値に関係なく、常に両端を含む日数で行う。 1. `YYYY-MM-DD` を年月日に分解し、UTCの暦日番号へ変換する。ローカル時刻の `Date` 解釈は使わない。 2. 開始日から終了日までを両端を含む暦日集合として作る。 3. `include_start=false` なら開始日を、`include_end=false` なら終了日を集合から除く。同日でどちらか一方でも `false` の場合、その1日は除かれ `calendar_days=0` となる。 4. `holidays` はカンマ、CRLF、LFで分割し、前後の空白と空要素を除く。全てを厳密な日付として検証し(判定規則は `input` と同じ)、重複を除いて昇順にする。期間外の有効な休日も正規化済み一覧には残すが、除外数には含めない。 5. 対象集合の土曜・日曜を `excluded_weekends` とする。正規化済み休日のうち、対象集合内にあり、かつ平日のものだけを `excluded_holidays` とする。土日と休日の重複は `excluded_weekends` にだけ数える。 6. `business_days = calendar_days - excluded_weekends - excluded_holidays` とする。

結果例

営業日数 対象暦日数 `calendar_days`: 端点包含条件を適用した後、土日・休日を除く前の集合の件数 除外した土日数 除外した指定休日数 正規化済みの開始日、終了日、休日一覧、端点包含条件 サンプル条件では、土日と指定休日を除いた営業日数を返す。

注意点

`missing_input`: 開始日または終了日が、前後の空白を除くと空になる `invalid_date`: 実在しない日付または `YYYY-MM-DD` 以外 `invalid_range`: 開始日が終了日より後 `range_too_large`: 対象期間が36,600日を超える `input_too_long`: holidays の入力文字列が20,000文字を超える `invalid_holiday`: 休日一覧に不正な日付がある `too_many_holidays`: 正規化後の休日が1000件を超える `invalid_boolean`: include_start または include_end がbooleanとして解釈できない `action` と `format` に不正な値または未知の値が渡された場合はエラーにせず、既存ツール共通の規約(日付・期間計算などが使う `normalizeFormat`/`normalizeChoice` 相当の実装)に合わせて既定値へ黙って正規化する。`action` は `count` 以外の値・未指定を `count` に、`format` は `html`・`json`・`raw` 以外の値・未指定を `html` に正規化する。この正規化はエラー一覧にもエラーコードにも現れない。 入力はブラウザ内だけで処理し、外部送信しない。 URLクエリは長さ、日付形式、件数、boolean、action、formatを検証する。 XSS対策として、入力と結果は `value` または `textContent` へ反映し、ユーザー入力を `innerHTML` へ渡さない。 URLへ秘密情報、APIキー、個人情報を載せる用途を想定しない。 GA、GTM、AdSenseへ入力クエリが送られる可能性を公開前に確認し、未確認なら計測・広告タグを読み込まない。 新しい外部ライブラリと外部APIは追加しない。

こんなときに使えます

  • 受付日から回答期限までに確保できる営業日数を確認する
  • プロジェクト期間から会社休日を除いた作業可能日数を見積もる
  • 表計算や業務システムの営業日計算結果を手早く照合する