2つの日付間の月数
2つの日付を入力すると、その間の丸ごとの月数と残りの日数が分かります。2024年1月15日から2025年3月10日までは13か月と23日です。月末も調整され、1月31日の1か月後は2月の末日になります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 開始のISO日付
- 2024-01-15
- 終了のISO日付
- 2025-03-10
- 開始日
- 2024-01-15
- 終了日
- 2025-03-10
- 月数
- 13
- 日数
- 23
契約、賃貸スケジュール、乳児の月齢、サブスクリプションの節目、プロジェクトのタイムラインでは、単なる日数の合計では足りないことがよくあります。2つの日付の間に丸の暦月がいくつ収まるか、そしてその月数の後に何日残るかが必要なのです。不正な形式や2月30日のような存在しない日付は無効入力で失敗し、課金されません。
主な使い道と実用上の注意
賃貸計算、赤ちゃんの月齢、契約の記念日チェック、教室でのデモには、moment系ライブラリやタイムゾーンデータベースをインストールせずに使える無料のブラウザー版2つの日付間の月数ツールをご利用ください。
ローンチタイマー用に時間と秒も必要な場合は2つの日付間のカウントダウン系ツールと、スケジュールを組む前に2月の長さを検証したい場合は月の日数計算ツールと組み合わせてください。期待値は正直に保ってください。
この製品は2つの明示的な日付の間の丸のグレゴリオ暦月と残りの日数を測るもので、サーバー時計から「今日」を捏造したり、週末を営業月としてスキップしたり、祝日カレンダーを読み込んだりはしません。入力データは他のKITのparse項目と同じ保持ルールに従います。
活用例
乳幼児・小児科向けの月齢計算
ヘルスケア・育児アプリが、浮動小数点の月平均やホストのタイムゾーンのずれなしに、出生日から何か月と何日が経過したかを計算します。
サブスクリプションとプロジェクトの節目
請求・プロジェクトダッシュボードが2つの固定されたISO日付間の勤続期間やフェーズの長さを測定し、目標日がすでに過ぎている場合はdirectionで文言を切り替えます。
よくある質問
2つの日付間の月数計算ツールは無料ですか?
ブラウザーのツールはお使いのデバイス上で無料で動作します。検証失敗は課金されません。
サーバーのシステム時計やJavaScriptのDateを使いますか?
いいえ。 両方の日付は入力文字列から取得されます。エンジンはDate、ネットワーク、乱数を使わない純粋なグレゴリオ暦の月計算を行うため、結果は完全に決定論的です。
開始日が31日のとき、月はどう数えますか?
月末に合わせて調整します。1月31日の1か月後は3月の日付ではなく、2月の最終日です。このように1か月ずつ進め、残った日数は別に数えます。
終了日が開始日より前の場合はどうなりますか?
期間の月数と日数はプラスのまま表示され、あわせて向きが「さかのぼり」と示され、マイナス符号付きの値も出るため、目標の日付がすでに過ぎたことが分かります。
時刻付きの日時も入力できますか?
はい。Zやオフセット付きの日時も受け付け、時刻の正しさも確認しますが、月数と日数には暦の日付だけを使うため、時刻で結果が変わることはありません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/date/months-between \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"2024-01-15","to":"2025-03-10"}'const res = await fetch("https://api.kit.forhosting.com/date/months-between", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"from": "2024-01-15",
"to": "2025-03-10"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/months-between",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"from": "2024-01-15",
"to": "2025-03-10"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/months-between", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"from":"2024-01-15","to":"2025-03-10"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"from":"2024-01-15","to":"2025-03-10"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/months-between", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"from": "2024-01-15",
"to": "2025-03-10"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.months_between",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
この2つの日付間の月数計算ツールは、ISO形式の暦日のペアを受け取り、グレゴリオ暦のうるう年規則の下で純粋な整数演算により各日付を検証し、早い方の日付を月末クランプ付きで月ごとに進め、フォーム、スプレッドシート、APIがカレンダーのエッジケースを再実装せずに固定できる、構造化された「丸の月数+残りの日数」の結果を返します。この経路はシステム時計、乱数、ネットワークに一切触れないため、同じfromとtoの文字列からは、継続的インテグレーションでも本番環境でも常に同じJSONが生成されます。
fromとtoのISO日付の選び方と受け付けられる形式
各値は、4桁の年・月・日からなるISO形式の暦日、たとえば2024-01-15のような形式にしてください。時・分・秒、任意の小数秒、UTCを表す末尾のZ、+02:00のような数値オフセットを含む完全なISO-8601日時を送ることもできます。年は1から9999まで、月は1から12までに制限され、日は該当する場合のうるう年の2月29日を含め、その月に存在する日でなければなりません。これらの範囲外のものは、黙って翌月へ繰り越されるのではなく無効入力になります。fromとtoという名前の2つの文字列フィールドを送信します。時刻が含まれる場合、エンジンは時刻フィールドを検証してありえない時刻を拒否しますが、丸の月数と残りの日数の計算には民用の年月日部分のみが使われます。これにより、秒単位のカウントダウンではなく2つの日付間の月数を探す方々にとって誠実な製品になっています。エイリアスのstart、begin、start_dateはfromに、end、until、end_date、targetはtoにマッピングされ、一般的なフォームやAPIの命名に対応しています。両方のフィールドは必須です。どちらかの省略、文字列でない値、空白のみの入力は、欠落している側を明示するinvalid_inputを発生させます。
months・days・total_days・符号付きフィールド・directionの読み方
monthsは、月末クランプを使い、早い方の日付から遅い方の日付を越えずに進められる最大の丸の月数です。1月31日に1か月を足すと2月の最終日になります。formatted文字列はmonthsとdaysを「14か月と23日」のようなコンパクトな1行にまとめ、素早いUIラベルに使えます。成功時のレスポンスには、元のfromとtoの文字列に加え、YYYY-MM-DD形式に正規化されたfrom_dateとto_dateが含まれます。monthsとdaysフィールドは常に非負で、2つ合わせて絶対的な民用期間を表します。daysフィールドはその進行後に残る民用日数の差なので、1月中旬から3月初めまでの期間は、純粋な日数の合計だけでなく「1か月と数十日」と報告されることがあります。total_daysフィールドは2つの日付の民用日番号の絶対差で、順序を問わない日数も必要な場合に便利です。終了が開始より早い場合、is_pastはtrue、directionはbackwardとなり、signed_monthsとsigned_days_remainderには負の符号が付きますが、monthsとdaysは表示用に非負のままです。両方の日付が一致する場合、is_zeroはtrue、directionはzeroとなり、すべての量はゼロです。人間向けの文にはmonthsとdays、長さでの並べ替えにはtotal_days、製品の文言で「残り」と「期限超過」を言い分ける必要がある場合にはdirectionをお使いください。
APIの使い方・料金・製品ワークフロー・実用上の制限
必須の文字列フィールドfromとtoをISO日付として含むJSONボディを送信します。請求システム、人事の勤続ボード、不動産プラットフォーム、プロジェクトプランナーが安定した契約を必要とする場合は、KIT残高から成功した1件あたり$0.002のプリペイドAPIをご利用ください。エンジンがリクエストを拒否した検証失敗では残高は消費されません。
連携の活用例
賃貸・契約期間の計算
不動産・法務ツールがリースの開始日と終了日のISO日付を渡し、概要ページに丸の月数と残りの日数を表示し、有効な契約の並べ替え用にtotal_daysを保存します。
技術的な質問
2つの日付間の月数はどうやって取得しますか?
fromとtoをISO日付として含むJSONを送信してください(例:from: "2024-01-15"、to: "2025-03-10")。レスポンスにはmonths、days、total_days、formatted文字列が含まれます。
日付が無効な場合はどうなりますか?
リクエストはinvalid_inputで失敗します。不正なISO形式、2月30日のような存在しない暦日、範囲外のフィールドは拒否され、課金されません。
終了日が開始日より前の場合は?
monthsとdaysは絶対期間として非負のまま、signed_monthsとsigned_days_remainderは負になり、is_pastはtrue、directionはbackwardになります。