日付に四半期を加算する月末調整対応計算ツール
この計算ツールは、明示されたISO日付を、正または負の整数で指定した四半期だけ移動します。1四半期は厳密に暦上の3か月です。そのため、11月30日の1四半期後は翌年2月となり、4四半期後はちょうど1暦年後になります。元の日が移動先の月に存在しない場合は、その月の最終有効日に補正します。計算にはUTC基準の決定的なグレゴリオ暦整数演算を用い、JavaScriptのDate、現在時刻、タイムゾーン変換、ネットワーク、乱数は使用しません。ブラウザーでは無料で実行でき、自動処理で再現可能な構造化結果が必要な場合は、成功した1リクエストにつき$0.002でAPIをご利用いただけます。
無料で実行
暦上の四半期を加算する意味
暦上の1四半期は連続する3か月であり、日、時間、秒で測る固定期間ではありません。1四半期を加えると月を3つ進め、移動先に同じ日があればその日を維持します。4四半期は12か月なので、通常は翌年の同じ月日になります。日付は厳密なYYYY-MM-DD形式の実在するグレゴリオ暦の日で、quartersは整数でなければなりません。正数は未来へ、負数は過去へ移動し、0では日付を保持します。実際の3か月間は月の長さや閏年によって日数が異なるため、四半期を90日とみなす曖昧さを避けられます。応答には正規化した元の日付、四半期数、結果のISO日付と年月日、相当する月数、補正の有無、移動先の月の日数が含まれます。時刻は受け取らず推測もしません。経過時間ではなく市民暦の問いを扱うためです。したがって、実行場所や利用者のローカルタイムゾーンにかかわらず結果は一定です。
入力検証と月末補正の仕組み
最初に、ハイフンで区切られた年4桁、月2桁、日2桁を確認します。続いてグレゴリオ暦として検証し、月は01から12、日はその月に実在する必要があります。2月29日は、4で割り切れる年のうち、400で割り切れない世紀年を除く年だけ有効です。アルゴリズムは年と月を整数の月インデックスに変換し、符号付き四半期数を3倍した差分を加え、移動先の年と月へ戻します。その後、元の日を移動先の月の日数と比較します。存在すれば維持し、存在しなければ最終日にしてclampedをtrueにします。たとえば11月30日の1四半期後は、平年なら2月28日、閏年なら2月29日です。結果が0001年から9999年の範囲を外れる操作は拒否します。全工程は有限整数だけで処理し、Date、時計、地域別の月名、実装依存のタイムゾーン規則を利用しません。
実務での用途と再現可能な連携
四半期単位の日付移動は、財務報告、契約更新、コンプライアンス審査、予測、教育、ソフトウェアテストで役立ちます。財務担当者は、四半期を暗黙に90日へ置き換えず、四半期末の記録から次回審査日を求められます。製品担当者は、更新日を進め、短い月による日付変更を確認できます。分析担当者はコホート境界を作成でき、開発者はどの環境でも同じテストデータを生成できます。負数を使えば、1四半期前や4四半期前の比較日も復元できます。入力に完全な日付があり、エンジンが現在時刻を読まないため、同じリクエストは必ず同じ応答になります。CIの検証、キャッシュ、再現可能な文書、監査対象の処理に適しています。ブラウザー実行は無料で、APIでは成功した項目ごとに$0.002がかかり、不正入力は推測せず拒否します。正確な経過日数や営業日が必要な場合は専用ツールをご利用ください。本機能は、3か月単位の整数四半期を加算し、可能なら日を維持し、必要なら予測可能に補正する処理に限定しています。
活用例
四半期更新日の計画
契約や購読の記念日を1回以上の3か月期間だけ進め、月末の扱いを明確に確認できます。
報告期間の比較
1四半期または4四半期前へ戻し、前四半期や前年との再現可能な比較日を作成します。
暦計算のテストデータ
Dateを使わず、閏年、年越し、短い月について決定的なISO結果を生成します。
よくある質問
この計算で1四半期はどのくらいですか?
1四半期は厳密に暦上の3か月であり、90日や固定秒数としては扱いません。
四半期を減算できますか?
はい。quartersに負の整数をご指定ください。結果は0001年から9999年の範囲内である必要があります。
移動先の月に元の日がない場合はどうなりますか?
移動先の月の最終有効日に補正し、応答のclampedフィールドをtrueにします。
タイムゾーンや現在の日付を使用しますか?
いいえ。明示日付と決定的な整数演算だけを使い、Date、時計、タイムゾーン変換は使用しません。
APIリクエストの料金はいくらですか?
ブラウザーでは無料です。成功したAPIリクエストは$0.002で、不正または範囲外の入力は拒否します。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/date/add-quarters \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2024-11-30","quarters":1}'const res = await fetch("https://api.kit.forhosting.com/date/add-quarters", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date": "2024-11-30",
"quarters": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/add-quarters",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date": "2024-11-30",
"quarters": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/add-quarters", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date":"2024-11-30","quarters":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date":"2024-11-30","quarters":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/add-quarters", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"date": "2024-11-30",
"quarters": 1
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.add_quarters",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
year_min | 1 |
year_max | 9999 |
quarters_min | -39996 |
quarters_max | 39996 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |