2つの日付間の営業日数を祝日を除いて計算
この営業日カウンターは、開始日と終了日を含む期間について、月曜日から金曜日までの日数を計算し、任意の祝日一覧を除外します。期限、支払条件、人員計画など、暦日では正確に扱えない業務に適しています。両端の日付を対象とし、重複する祝日は1回だけ扱い、土曜日や日曜日の祝日を二重に差し引くこともありません。現地時刻ではなく暦の算術を用いるため、同じ入力からはどの環境でも同じ結果が得られます。
無料で実行
期間を指定し、両端の扱いをご確認ください
開始日と終了日は、正確にYYYY-MM-DD形式で入力してください。この計算では両端を含むため、それぞれが営業日として加算される可能性があります。開始日と終了日が同じ水曜日で、その日が祝日一覧に含まれていなければ、結果は1です。同じ日曜日だけを指定した場合は0になります。この規則を明示しているのは、計算ツールによっては初日を除外したり、終了日を期間外の期限として扱ったりするためです。本機能では開始日から終了日までのすべての暦日を確認します。終了日を開始日より前にすることはできません。逆順の期間には、負数や誤解を招く値ではなく入力エラーを返します。また、グレゴリオ暦上で実在する日付かどうかも検証するため、2月30日のような不可能な日付が翌月へ自動的にずれることはありません。
週末の数を崩さずに祝日を除外できます
祝日はYYYY-MM-DD形式の日付からなる任意の配列として追加してください。指定期間内にあり、かつ月曜日から金曜日に当たる場合に限り、営業日数から差し引かれます。土曜日または日曜日の祝日は、週末としてすでに対象外なので、追加で差し引かれません。期間外の日付は受け付けますが結果には影響しないため、企業の年間休日一覧を複数の計算で再利用できます。同じ日付が重複していても1回だけ除外され、複数の情報源を統合した場合にも合計が不当に減りません。本機能は国別の祝日を自動選択しません。契約、事業所、学校、市場、法域に適用される日付をご指定ください。これにより、振替休日、地域の休業日、組織独自の規則を勝手に仮定しません。すべての祝日を検証し、形式が不正な日付や実在しない日付には明確な入力エラーを返します。
計画や自動処理で結果をご活用いただけます
応答では最終的な営業日数に加え、祝日を除く前の平日数と、実際に除外された平日の祝日数を分けて示します。そのため、計算根拠の説明や確認が容易です。たとえば、ある期間に平日が8日あり、該当する祝日が1日なら、営業日は7日だと示せます。給与、請求、サポート、物流、コンプライアンスの各システムでも、端末のタイムゾーンに依存せず、同じ形式でサービス期間を確認できます。アルゴリズムは決定的な整数の暦計算を使い、ネットワーク、現在日時、乱数を利用しません。したがって、ブラウザーとAPIのどちらでも、同じ入力には同じ出力が返ります。このページでの対話的な利用は無料で、APIリクエストは1回$0.002です。繰り返し計算する場合は、祝日一覧と一緒に法域や社内規程も保存してください。本機能は指定日を評価しますが、組織が正式に採用する休日までは判断しません。
活用例
サービス期限を測定する
受付から完了までに利用できる勤務日を数え、担当チームに適用される休業日を除外します。
支払条件を確認する
支払確認のための両端を含む期間を計算し、該当する銀行や事業所の休日を明示します。
人員と納品を計画する
月曜日から金曜日までの統一した数え方と再利用可能な社内休日一覧で、プロジェクト期間を比較します。
よくある質問
開始日と終了日は含まれますか?
はい。月曜日から金曜日に当たり、除外対象の祝日でなければ、それぞれの日付を数えます。
祝日が週末に当たる場合はどうなりますか?
土曜日と日曜日はすでに対象外のため、追加で営業日数を減らすことはありません。
重複する祝日は複数回差し引かれますか?
いいえ。同じ祝日の日付を除外するのは最大1回です。
国別の祝日を自動的に判定しますか?
いいえ。振替休日を含め、対象となる法域または組織の休日をご指定ください。
終了日が開始日より前の場合はどうなりますか?
負の値ではなく、無効な入力であることを示すエラーを返します。
APIでの計算料金はいくらですか?
APIリクエストには公開基本料金$0.002が適用され、ブラウザーの計算機は無料です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/calc2/business-days-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start_date":"2026-07-01","end_date":"2026-07-10"}'const res = await fetch("https://api.kit.forhosting.com/calc2/business-days-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start_date": "2026-07-01",
"end_date": "2026-07-10"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc2/business-days-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start_date": "2026-07-01",
"end_date": "2026-07-10"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc2/business-days-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start_date":"2026-07-01","end_date":"2026-07-10"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start_date":"2026-07-01","end_date":"2026-07-10"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc2/business-days-count", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"start_date": "2026-07-01",
"end_date": "2026-07-10"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc2.business_days_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |