月の初日と最終日
年と月を選ぶと、その月の初日と最終日が分かります。2024年2月は2024-02-01から2024-02-29まで、2023年2月は2023-02-28で終わります。請求書や報告の期間にそのまま使え、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 年
- 2,024
- 月
- 2
- 月名
- February
- 初日
- 1
- 最終日
- 29
- 月の日数
- 29
この月の初日と最終日を計算するツールは、グレゴリオ暦の年と1から12までの月番号を受け取り、その月の開始日と終了日を厳密なYYYY-MM-DD形式で返します。代表的な検証例として、2024年2月は初日2024-02-01、最終日2024-02-29で29日、2023年2月は最終日2023-02-28、2024年4月は2024-04-01から2024-04-30までとなります。エンジンはグレゴリオ暦のうるう年規則に基づく決定的なテーブル駆動の月の長さのみを使用するため、ホストの時計を参照することも、ランダム性をサンプリングすることも、ネットワークを呼び出すこともありません。
月の初日と最終日で分かること
ある月の初日と最終日を知ることは、任意の2つの日付の間の日数を数えること、次の曜日を見つけること、ユリウス日番号を変換することとは異なる問いに答えます。それは名前の付いた年月の市民暦上の境界を固定し、レポート範囲、請求書、保持期間が1日に始まり、30日の月やうるう年の2月でオフバイワンエラーを起こすことなく真の最終日に終わるようにします。
ロケール依存の週の開始、日の長さの浮動小数点近似、ホストのDateオブジェクトへの依存はありません。任意の2つの日付の間の整数日の距離、曜日のナビゲーション、ISO週変換が必要な場合はそれぞれの専用ツールをご利用ください。このページは、検証済みの単一の年月のカレンダー上の開始と終了のみに答えます。
月の範囲が請求・レポーティング・ソフトウェアで役立つ場面
運用チームや財務チームが月の初日と最終日を必要とするのは、サブスクリプションの請求書が暦月全体を対象とする場合、保持ポリシーがイベントを含む月として述べられている場合、あるいはダッシュボードのフィルターが30や31をハードコードすることなく現在のレポーティング月を既定にする場合です。
コホートを構築するアナリストは同じ境界を用いて、初日に開き真の最終日に閉じる観測ウィンドウにラベルを付け、複数年の遡及取り込みで2月や短い月が現れたときのサイレントな切り詰めを回避します。
教育者や標準策定者は、時刻をサイレントに含めてしまう不透明な電卓アプリに頼ることなく、2024年2月と2023年2月のようなうるう日の月末を実演するためにこのツールを使います。このページでの計算はすべてブラウザ内で完結します。
関連するカレンダー操作が必要なときは2つの日付の間の日数、日数の減算、ISO週ヘルパーと組み合わせ、日付ユーティリティの小さなラボを構築する際は他の無料の決定的なツールと組み合わせてご利用ください。
活用例
請求と請求書の範囲
日数をハードコードすることなく請求書やサブスクリプションが月全体を対象とするよう、ある年月の包括的な初日と最終日を取得します。
うるう2月と短い月
グレゴリオ暦のうるう規則により2月が28日または29日で終わること、4月・6月・9月・11月が正しく30日で閉じることを検証できます。
よくある質問
monthが1から12の範囲外の場合はどうなりますか?
monthは1(1月)から12(12月)までの整数でなければなりません。
2月のうるう年はどのように扱われますか?
4で割り切れるが400で割り切れない世紀年を除き、4で割り切れる年はうるう年です。その場合2月は29日、そうでなければ28日です(例: 2024年と2000年)。
このツールはホストのDateオブジェクトを使いますか?
いいえ。 月の長さとうるう規則は固定テーブルによる純粋な整数算術であるため、結果はタイムゾーンや時計の影響を受けず実行環境間で再現可能です。
30日で終わる月はどれですか?
4月、6月、9月、11月は30日で終わります。たとえば2024年4月は2024-04-01から2024-04-30までです。2月は28日、うるう年は29日で終わり、それ以外の月は31日までです。
2つの日付は月の期間に含まれますか?
はい。初日は必ず1日、最終日はその月の本当の最後の日なので、その間で区切った絞り込みや請求書は、最後の日を落とさずに月全体をカバーします。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/date/month-start-end \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"year":2024,"month":2}'const res = await fetch("https://api.kit.forhosting.com/date/month-start-end", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"year": 2024,
"month": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/month-start-end",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"year": 2024,
"month": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/month-start-end", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"year":2024,"month":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"year":2024,"month":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/month-start-end", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"year": 2024,
"month": 2
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.month_start_end",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
請求ウィンドウ、レポート範囲、宿題にはブラウザで無料にご利用いただき、CI、スケジューリングパイプライン、月末の日付を独自に発明してはならない製品機能で再現可能な月の範囲が必要な場合は、成功したリクエストごとに$0.002のAPIをご利用ください。
月の開始と終了が意味すること、そしてレスポンスの内容
1月を1、12月を12とする整数のyearと整数のmonthを指定します。この計算ツールはそれらのフィールドを検証し、遡及グレゴリオ暦の下でその年のその月が何日あるかを調べた上で、YYYY-MM-01としてのfirst_date、真の最終日をゼロパディングしたYYYY-MMとしてのlast_date、常に1に等しいfirst_day、days_in_monthに等しいlast_day、表示用の英語のmonth_name、2月に敏感な呼び出し側のためのis_leap_year、そして短い式の説明を返します。年と月がサポート範囲内で有効であれば境界は完全に決定され、そうでなければinvalid_inputでリクエストは失敗します。拒否されるケースには、yearまたはmonthの欠落、非整数の値、1から9999の範囲外の年、ゼロや13、負のインデックスのような1から12の範囲外の月が含まれます。
yearとmonthの読み取り方法とうるう年の2月を正しく保つ仕組み
各値は数値、任意の符号を持つ純粋な整数文字列、あるいは安全な整数範囲に収まるbigintとして届く場合があります。埋め込まれた小数、16進数プレフィックス、非数値トークンは明確なメッセージとともに拒否されるため、不正なセルが誤った最終日につながることはありません。月の長さは31、30、28日の固定テーブルから得られますが、2月はその年がグレゴリオ暦のうるう年(4で割り切れるが400で割り切れない世紀年を除く)の場合は29日になります。この規則は2024-02-29と2000-02-29を正しく与えつつ、どの月にも32日を発明しようとする試みを拒否します。優先される1番目のフィールドはyearですが、yとYといった別名も受け付けるため、スプレッドシート、クエリ文字列、型付きフォームは列名を変えずに同じ契約を再利用できます。優先される2番目のフィールドはmonthで、同様の理由でm、M、monといった別名も受け付けます。解析後、yearは1以上9999以下、monthは1以上12以下でなければならず、0、13、あるいは月として2024のような値はmonthフィールドを名指ししてinvalid_inputで失敗します。初日は常に1、最終日はdays_in_monthに等しく、両方の境界は4桁の年と2桁の月・日でフォーマットされます。自動化されたパイプライン内で同一の月の範囲が必要な場合は、このページの無料ブラウザ実行と有料APIを組み合わせてご利用ください。
月の範囲が請求・レポーティング・ソフトウェアで役立つ場面
開発者はこの契約をスクリプトから呼び出し、スケジューラーや給与計算用の決定的なテストベクターを生成したり、包括的なカレンダー日付のみを受け付けるAPIの範囲フィールドを検証したり、予期しないゾーンで真夜中を回すホストのDateオブジェクトによるタイムゾーンのずれのない純粋なグレゴリオ暦の境界を要求する製品要件を満たしたりします。API経由では成功した検索1件につき$0.002がかかり、検証に失敗したリクエストは課金されず、レスポンスが返された後は何も保存されません。この無料のインタラクティブな探索と、同一結果を返す有料APIという分割は、KITのtier-Aカタログの他のツールと同様であり、単発のチェックからパイプラインへ、数学的な結果を変えることなく移行できます。
連携の活用例
決定的なテストフィクスチャ
DateやホストのAPIに依存せずに、ユニットテストやプロパティチェック、CIアサーション向けに再現可能なfirst_dateとlast_date文字列を生成できます。
技術的な質問
月の初日と最終日を計算するツールの料金はいくらですか?
このページのブラウザ版は無料です。API経由では成功したリクエストごとに$0.002がかかり、無効な入力には課金されません。
初日と最終日はどのように定義されますか?
検証済みの年月に対して、first_dateは常にYYYY-MM-01、last_dateはYYYY-MM-{days_in_month}で、days_in_monthはグレゴリオ暦の月の長さテーブル(うるう年は2月29日)から得られます。