1か月の週数を計算
指定したISO日付を含む月が、カレンダー上で何週間にまたがるかを計算します。YYYY-MM-DD形式の日付と週の開始曜日をご指定ください。月の日数、うるう年、月初より前の空欄を考慮し、一般的な月間カレンダーに必要な行数を返します。UTCに結び付いた固定のグレゴリオ暦演算を使用するため、端末の時計、地域設定、夏時間に左右されず、ブラウザー、API、表計算、業務処理で同じ結果を得られます。
無料で実行
カレンダー週の範囲が示すもの
1か月の日数は必ずしも7の整数倍ではなく、「1か月の週数」には複数の解釈があります。本計算では、選択した月の日付を1日でも含む週間行の数を求めます。最初に月初の曜日を特定し、指定された週開始曜日から月初までの空欄数を数え、実際の日数を加えて7日単位の行に分けます。そのため、31日ある月は開始曜日によって5週間または6週間にまたがります。28日の2月は月初と週開始が一致すれば4行ですが、一致しなければ5行になる場合があります。この定義は月間カレンダー、勤務表、授業計画、レポート表に適しています。単純に日数を7で割る方法は期間を表しますが、月がまたぐ表示上または業務上の週区分数は分からないため、本計算とは意図的に区別しています。
週の開始曜日を明示してください
first_weekdayで週の境界を指定します。0は日曜日、1は月曜日で、6の土曜日まで順に対応します。ISOを基準とする業務カレンダーで一般的な月曜日を既定値としていますが、唯一の正しい慣習という意味ではありません。日曜始まりの小売予定表と月曜始まりのオフィス予定表では、同じ月でも結果が異なることがあります。応答には数値設定、その英語曜日名、月初の曜日、先行する空欄数が含まれるため、計算を確認し、システム間の慣習の不一致を発見できます。日付はゼロ埋めした明示的なYYYY-MM-DD形式でご入力ください。日は対象月の選択と妥当性確認に使われ、同じ年月の範囲で変更しても週数は変わりません。存在しないうるう日などの無効な日付は、別の日へ自動補正せずエラーとして扱います。
自動処理に適した決定的な暦演算
0001年から9999年までの先発グレゴリオ暦を使用します。4で割り切れる年をうるう年とし、100で割り切れて400で割り切れない年は平年とします。曜日は整数演算だけで算出し、現在時刻、ネットワーク、乱数、JavaScriptのDateオブジェクトを参照しません。UTCという表記は、サーバー所在地や利用者の時差で移動しない、安定した民間暦日としての解釈を示します。そのため、夏時間の切り替え時や深夜付近でも、同一のJSONからブラウザーとAPIで同一の結果が得られます。週間レポートの区画数、印刷予定表の行数、取り込んだカレンダーの検証、月間配分枠の作成にご活用いただけます。応答には月の日数と名称、月初曜日、先行空欄数も含まれ、weeks_in_monthの根拠を後続処理に残せます。APIは$0.002から、ブラウザーでも同じ決定的な中核処理をご利用いただけます。
活用例
月間カレンダーの行数を決定
表示や印刷の前に、4行、5行、6行のどれが必要かをご確認いただけます。
週間勤務枠を作成
組織の週開始規則に従い、月間勤務表へ正しい数の週間区画を作成できます。
レポート配置を検証
月間レポートが日付を含むすべてのカレンダー週を確保しているか確認できます。
よくある質問
すべての月は4週間ですか?
いいえ。4週間は正確に28日ですが、多くの月はそれより長く、カレンダー上で5行または6行になります。
first_weekdayとは何ですか?
週の境界を指定する値です。0は日曜日、1は月曜日で、6の土曜日まで順に対応します。
週の開始曜日で結果が変わるのはなぜですか?
週の境界が移動すると、月初と月末の日付が異なる数の週間行に分かれる場合があるためです。
入力日付の日は結果に影響しますか?
対象月の特定と検証に使用します。同じ年月の有効な日付なら、同じ設定で週数は変わりません。
うるう年とタイムゾーンはどう扱いますか?
整数によるグレゴリオ暦規則を適用します。タイムゾーン変換を行わないため、民間暦日はUTC基準で安定します。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/date/weeks-in-month \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2026-08-13"}'const res = await fetch("https://api.kit.forhosting.com/date/weeks-in-month", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date": "2026-08-13"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/weeks-in-month",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date": "2026-08-13"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/weeks-in-month", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date":"2026-08-13"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date":"2026-08-13"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/weeks-in-month", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"date": "2026-08-13"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.weeks_in_month",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |