月数カウンター
2020年1月から2024年6月までは、ちょうど53か月です。それぞれの日付の年と月だけを入力すれば、日にちがなくても、賃貸契約や勤続期間、サブスクリプション、プロジェクトの月数が分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 開始年
- 2,020
- 開始月
- 1
- 終了年
- 2,024
- 終了月
- 6
- 月数
- 53
- 月数
- 53
月数カウンターは、日付差の完全な道具より狭い問いに答えます。2つの暦日について年と月だけが分かっているとき、その間に丸い月はいくつあるか。賃貸の見積り、勤続月数、定期契約の予定、案件の窓を請求周期へ換算するときに、人はその数を調べます。
年月2点のあいだの丸月数が意味すること
暦月は市民年のなかの名前付きの枠 — 一月から十二月 — であり、日数が固定された塊ではありません。二つの日付のあいだに何か月あるかを尋ね、しかも各日付の年と月しか知らないとき、残日数も閏日の補正も、年・月・日の年齢も求めてはいません。求めているのは年月格子のうえの整数の隙間です。
その隙間は二つの序数的な月番号の差です。年に十二を掛け、月番号を足します。開始側の番号を終了側から引けば、符号付きの丸月数が得られます。
2020年1月から2021年1月は十二か月、2020年1月から2020年2月は一か月、同じ年月なら零です。対を逆にすると符号付きの結果だけ符号が変わり、絶対月数は同じです。これは完了した請求周期に給与システムが使う算術であり、「2024年3月から二十四か月の期間」と書く賃貸条項が意味する恒等式でもあります。
月の日は渡されないので、二十八日の月でも三十一日の月でも結果は変わらず、日を意識する加算器が行う月末の切り詰めも起きません。日が不要または不明なときに開く道具が、月数カウンターです。
入力契約・検証・返ってくる応答
必須の整数を四つ送ってください。年は 1 以上 9999 以下、月は 1 以上 12 以下でなければなりません。"2020" や "06" のような数値文字列は受け付けます。
真偽値、オブジェクト、空文字、非整数は受け付けません。四年は四十八か月、一月から六月でさらに五か月加わるからです。エンジンはシステム時計を読まないため、同じ四整数を送った呼び出し元は常に同じオブジェクトを受け取ります。
月数カウンターが役立つ場面
住居・施設のチームは、契約が正確な日ではなく暦月で書かれているとき、入居の年月と退去の年月のあいだの月数を数えます。人事の道具は、欠落した月日をでっち上げずに、採用の年月から考課の年月までの完了月数として勤続を報告します。定期契約や SaaS の請求窓口は、月額を掛ける前にプランの窓を月数へ直します。
案件責任者は着手月と出荷月を、ガントや定額見積りに載せられる期間へ変えます。検証失敗は残高を消費しません。
活用例
賃貸・リースの期間
契約が正確な日ではなく暦月で書かれているとき、入居の年月から退去の年月までの丸月数を数えます。
勤続月数
欠落した月日を作らず、採用の年月から考課または退職の年月までの完了月数を報告します。
定期契約と案件の窓
プラン開始月と終了月を請求周期の数へ、着手月と出荷月を案件の期間へ変えます。
よくある質問
月または年が不正なときはどうなりますか?
月は 1 から 12 の整数、年は 1 から 9999 の整数でなければなりません。その失敗は課金されません。
月数カウンターに月の日は必要ですか?
不要です。 検索意図は年月格子だけです。残日数つきの日意識スパンには、完全な暦日を受け取る日付差の道具を使ってください。
終了日が開始日より前ならどうなりますか?
同じ対を逆順にすると、符号が変わるのは months だけです。
開始月も1か月として数えますか?
数えません。2つの月のあいだの差を測ります。2020年1月から2020年2月は1か月、2020年1月から2021年1月は12か月で、同じ年と月なら0です。
月数カウンターはどんなときに使いますか?
日数ではなく暦の月で決まるものに使います。入居から退去までの賃貸、評価のための勤続月数、請求期間に直すサブスクリプション、見積もり用の開始から納品までの期間などです。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/life/month-counter \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start_year":2020,"start_month":1,"end_year":2024,"end_month":6}'const res = await fetch("https://api.kit.forhosting.com/life/month-counter", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start_year": 2020,
"start_month": 1,
"end_year": 2024,
"end_month": 6
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/month-counter",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start_year": 2020,
"start_month": 1,
"end_year": 2024,
"end_month": 6
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/month-counter", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start_year":2020,"start_month":1,"end_year":2024,"end_month":6}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start_year":2020,"start_month":1,"end_year":2024,"end_month":6}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/month-counter", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"start_year": 2020,
"start_month": 1,
"end_year": 2024,
"end_month": 6
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.month_counter",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
year_min | 1 |
year_max | 9999 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
この能力は start_year、start_month、end_year、end_month を受け取り、各年を 1 から 9999 の整数、各月を 1 から 12 の整数として検証し、months が終了年マイナス開始年、かける十二、足す終了月マイナス開始月、という恒等式を適用します。符号付きの差が months、絶対値が month_count です。不正な月または年は invalid_input で失敗し、課金されません。
年月2点のあいだの丸月数が意味すること
それは検索意図の性質であり、日フィールドの欠落ではありません。
入力契約・検証・返ってくる応答
開始とみなす側が start_year と start_month、もう一方が end_year と end_month です。別名 from_year、begin_year、from_month、begin_month、to_year、until_year、to_month、until_month は同じ四欄に対応するので、フォームやスクリプトは既存スキーマの名前をそのまま使えます。いずれかの日付に不正な月または年があれば、欄名を含む invalid_input で失敗し、課金されません。成功時の本体は検証済みの四整数を返し、符号付き差を months、絶対月数を month_count とし、公式を再掲するので、クライアントは答えの横に恒等式を印字できます。例: start_year 2020、start_month 1、end_year 2024、end_month 6 は months 53 と month_count 53 です。
月数カウンターが役立つ場面
あとで API を書く来訪者が第二の答えを見ることはありません。実装は純 parse のティア A なので、成功した呼び出しは公開の基本料金 $0.002 だけで、モデルトークンも外向き通信もありません。要求に両方の年月対を残し、試験で month_count を固定すれば、賃貸・勤続・請求向けに再現可能な月数が得られ、自前の暦ライブラリは不要です。
技術的な質問
月数カウンターは2つの日付のあいだの丸月数をどう計算しますか。
start_year、start_month、end_year、end_month を受け取り、months = (end_year − start_year) × 12 + (end_month − start_month) を返します。month_count はその符号付き差の絶対値です。
月数カウンターの料金はいくらですか。
ブラウザの道具は無料です。API 要求は成功1回につき前払い KIT 残高から $0.002 を使います。不正な入力は課金されません。