時間と日付

営業日計算機

2つの日付間の営業日をカウントするか、開始日に営業日を加算します。週末と祝日のルールも適用されます。

01入力
02結果
営業日
終了日
総暦日数
週末日数
休日
日数内訳
03仕組み

この計算が必要な理由

プロジェクト計画、契約期限、支払い条件(「締め後30日払い」)、法的な通知期間、規制当局への応答期間、給与計算のタイムシート — あらゆる職場は、暦日数ではなく営業日数演算で動いています。この演算は、原則としては驚くほど簡単ですが、実際には面倒です。期間中の平日を数え、場合によっては祝日を除外し、週末に当たった祝日を誤ってスキップして二重にスキップしないようにする必要があります。オフィスでは短い期間(1〜2週間)は頭の中で計算しますが、1ヶ月を超える期間を手計算すると、期日超過や支払い日に関する紛争といった問題につながるエラーが発生しやすくなります。この計算機は、2つの指定された日付の間の営業日数を数える、または開始日から指定された営業日数だけ未来(または過去)にプロジェクトを進める、という両方の方向の質問に対応し、ユーザーは週末に加えてスキップしたい祝日の日付をカンマ区切りで入力できます。

土曜日スキップと日曜日スキップのフラグは独立しているため、この計算機は、標準的な月曜日から金曜日だけでなく、日曜日から木曜日が労働週である地域(サウジアラビア、中東の一部)でも機能します。

計算式

この計算機は、要求された期間を日ごとに反復処理します。訪れた暦日ごとに、その日を次のように分類します。

  1. 週末: その日がスキップセット(土曜日および/または日曜日)に含まれる曜日である場合。
  2. 祝日: ユーザーが提供した祝日リストに含まれており、すでに週末と分類されていない場合。
  3. 営業日: 上記以外の場合。

間(between) モード(開始日から終了日までの営業日数を両端を含めて数える)の場合:

  • 開始日から終了日まで(どちらの方向でも)毎日をたどります。
  • 週末、祝日、営業日のヒットを数えます。
  • 4つのカウント(営業日、週末、祝日、合計)を出力します。

加算(add) モード(開始日 + N 営業日数)の場合:

  • 暦日を1日ずつ前方(N > 0)または後方(N < 0)にたどります。
  • |N|は、その日が営業日である場合にのみデクリメントします。
  • |N|が0に達したとき、その日が結果の日付です。
  • 途中で週末/祝日/営業日のヒットを数えます(「週末3日と祝日1日を通過した」という詳細な情報が得られます)。

実装はO(期間)です。数年までの期間であれば問題ありません。期間が100,000日を超える場合、日ごとのウォークは遅くなりますが、ブラウザのJavaScriptでも処理可能です。閉形式の代替(週をまとめて端数を調整する)はより高速ですが、週末に当たる祝日の扱いは複雑になりがちです。日ごとのウォークは、その構成により堅牢です。

使用方法

モードを選択します:between(日付範囲内の営業日数を数える)または add(未来/過去にプロジェクトを進める)。

開始日(YYYY-MM-DD)を入力します。終了日(betweenモードの場合)または加算日数(addモードの場合;負の値は減算)を入力します。

お住まいの地域の労働週パターンに合わせて、「土曜日をスキップ」と「日曜日をスキップ」を切り替えます。

祝日を YYYY-MM-DD 形式の日付で、カンマ、スペース、またはセミコロンで区切って入力します。週末に当たる祝日は二重カウントされません(すでに週末として除外されています)。

結果パネルには、見出しとして営業日数が表示され、結果の終了日(addモードでは新しい日付、betweenモードでは入力された終了日がそのまま表示)、合計暦日数、週末および祝日の日数カウントが表示されます。棒グラフは内訳を視覚的に表示します。

実例

2026年第1四半期の営業日(betweenモード、祝日なし):

  • 開始日 2026-01-01、終了日 2026-03-31。
  • 合計暦日数:90日(両端を含む)。
  • 土曜日:13日。日曜日:13日。祝日:0日。
  • 営業日数:90 − 26 = 64日

祝日 2026-01-01(元日)、2026-04-06(イースターマンデー — ただし第1四半期外)、2026-05-01(メーデー、第1四半期外)を追加する場合:

  • これらの中で、範囲内に含まれるのは2026-01-01のみです。これは木曜日なので、祝日としてカウントされます。
  • 営業日数:64 − 1 = 63日

2026-05-04(月曜日)から +10営業日数

  • 5月4日(月)→ +1営業日 → 5月5日(火)へ移動 → +1 → 5月6日 → +1 → 5月7日 → +1 → 5月8日(金)→ +1 → 5月9日(土、スキップ)→ 5月10日(日、スキップ)→ 5月11日(月)→ +1 → 5月12日 → +1 → 5月13日 → +1 → 5月14日 → +1 → 5月15日(金)。
  • 結果:10営業日後、週末2日を通過した結果は 2026-05-15

2026年4月のプロジェクト期間、イースターの2週間を除く

  • 開始日 2026-04-01、終了日 2026-04-30。
  • 祝日 2026-04-06(イースターマンデー)、2026-04-13(月曜日)。
  • 合計暦日数:30日。土曜日:4日(4, 11, 18, 25)。日曜日:4日(5, 12, 19, 26)。適用された祝日:2026-04-06(月、営業日→祝日)、2026-04-13(月、営業日→祝日)。
  • 週末:8日。祝日:2日。
  • 営業日数:30 − 8 − 2 = 20日

注意点

両端を含む/含まない終端。この計算機は、between モードで両方の終端を数えます(4月1日から4月30日まで = 30暦日数)。一部の法的な文脈(「契約締結日からの営業日数」)では、署名後の日のみを数えます。契約書の文言を確認してください。

週末の祝日。あなたの管轄区域で週末の祝日を翌月曜日に移動させる場合(米国連邦政府の祝日)、実際の祝日ではなく観測される日付を入力してください。この計算機は自動的に移動しません。

半日祝日。クリスマスイブ、大晦日、および同様の半営業日の祝日は管轄区域によって異なります。この計算機は完全な祝日除外のみを扱います。

半日週末(一部の旧産業では土曜日の午前が労働時間である場合)。モデル化されていません。この計算機は土曜日を完全にスキップするか、完全に数えます。

宗教暦の祝日。イースター、イード、ヨム・キプールは年ごとに日付が移動します。外部で日付を計算し(イースターはグレゴリオ暦の太陰暦計算です)、入力してください。この計算機には宗教暦の解決機能は組み込まれていません。

タイムゾーン。この計算機は、演算の安定性のためにUTCで動作しますが、ユーザーが入力したYYYY-MM-DD文字列をそのまま使用します。特定のタイムゾーン(例:ニューヨーク時間)によって「営業日」が定義される契約では、そのタイムゾーンの日付境界がローカルと異なる場合があります。通常、日単位の粒度では違いは重要ではありませんが、国境を越える契約で深夜の場合には影響する可能性があります。

「−10を足す」の方向性。営業日数を減算すると、過去にさかのぼって計算されます。週末スキップのロジックは同様に適用されます。月曜日から−10営業日を計算すると、「10暦日前」ではなく、その前の前の月曜日になります。

年境界の遷移。演算は暦を認識しており、うるう年の処理(2月29日は4年に1度のみ)も含まれます。

異なる週末の慣習。UAEは2022年に日曜日から木曜日の労働週を月曜日から金曜日に変更しました。イスラエルは日曜日から木曜日を使用します。サウジアラビアは日曜日から木曜日を使用します。土曜日スキップ/日曜日スキップのトグルを使用すると、これらの地域をモデル化できます。土曜日スキップをオフにし、金曜日スキップを祝日リスト(年間の固定パターンである場合)でチェックします。

祝日は「床」であり、「上限」ではない。この計算機は、リストされた日付がそうでなければ営業日であった場合にスキップします。祝日を追加するわけではありません。日付がすでに週末である場合、祝日リストに入力しても効果はありません。

変動祝日は自動処理されない。感謝祭(11月の第4木曜日)、メモリアルデー(5月の最終月曜日)、母の日 — これらは対象年について計算し、具体的な日付として入力する必要があります。この計算機は純粋な演算エンジンです。

長期間。10年を超える期間も正しく計算されますが、日ごとのウォークは遅いパスです。非常に長期間の場合は、閉形式の週数×5 + 端数調整アプローチの方が高速です。

バリエーション

  • 労働時間モード:9時〜17時の労働日と半日サポートを追加することで、営業日を労働時間に拡張します。
  • SLA締切モード:同じ演算ですが、時間単位と日ごとのSLAウィンドウがあります。
  • 国別祝日パック:事前ロードされた祝日リスト(米国連邦、EUシェンゲン、フランス公共、英国銀行休業日)。
  • 会計年度演算:会計年度に合わせた期間の営業日数を数えます。
  • 逆締切計算:目標締切日を指定して、N営業日遡って「開始すべき日」を見つけます。

関連計算機