calc / date
営業日計算
開始日〜終了日の営業日数を計算します。祝日リストの貼り付けと土曜除外オプションに対応しています。
「日本の祝日計算」ツールからコピーした日付を貼り付けてください
12
営業日数
business days
16
期間合計
total days
2
除外: 日曜
sundays
2
除外: 土曜
saturdays
0
除外: 祝日
holidays
使い方
01- 開始日・終了日を入力します(当日を含む)
- 必要に応じて「土曜日を除外する」をチェックします
- 「日本の祝日計算」ツールで取得した日付リストを祝日欄に貼り付けます
- 入力と同時に営業日数・除外数が自動で計算されます
実装コード
021日ずつ走査するシンプルな実装です。祝日は Set<string> で管理しO(1)で検索します。
export function calcBusinessDays(opts: BusinessDaysOptions): BusinessDaysResult {
const { startDate, endDate, excludeSaturday, holidays } = opts
if (startDate > endDate) return { businessDays: 0, ... }
const holidaySet = new Set(holidays)
let businessDays = 0, excludedSundays = 0, ...
for (let d = new Date(start); d <= end; d.setDate(d.getDate() + 1)) {
const dow = d.getDay()
if (dow === 0) { excludedSundays++; continue }
if (dow === 6 && excludeSaturday) { excludedSaturdays++; continue }
if (holidaySet.has(dateStr) && dow !== 0 && !(dow === 6 && excludeSaturday)) {
excludedHolidays++; continue
}
businessDays++
}
return { businessDays, totalDays, excludedSundays, excludedSaturdays, excludedHolidays }
}よくある使用例・注意点
03祝日は自動取得しない理由
APIに依存せずオフラインでも動くよう、祝日は手動入力方式にしています。「日本の祝日計算」ツールで取得した日付リストをそのまま貼り付けると簡単です。
土曜日の扱い
デフォルトでは土曜日も除外します(週休2日制想定)。土曜出勤がある場合はチェックを外してください。
同日入力時の挙動
開始日と終了日が同じ日付の場合、その1日を計算します(平日なら1営業日、日曜なら0)。
祝日と土日の重複
土日と重なる祝日は「除外: 祝日」にはカウントされません。日曜祝日は「除外: 日曜」、土曜祝日(除外ON時)は「除外: 土曜」にカウントされます。
関連ツール
04ソースコード
05このツールのソースコード(テストコードを含む)はGitHubで公開しています。MITライセンスで自由に利用・改変できます。
GitHub でコードを見る →