使い方
- 「開始日」「終了日」を選ぶと、日数・週数・年月日の内訳・各日の曜日が即座に表示される。締切までの残り日数や在籍期間の計算などに。
- 契約日数のように開始日も1日目として数えたい場合は「初日を含めて数える」をオンにする(オフだと純粋な引き算の日数になる)。
- 土日と、任意で入力した祝日を除いた「平日数」も同じ期間で自動計算される。祝日は1行に1日、
YYYY-MM-DD形式で入力する。 - 下段では「基準日」から指定した日数・週・月だけ前後した日付と曜日を計算できる(納期や期限の算出に)。
仕組み・根拠
日付の計算は Date.UTC() で生成したUTC基準の日時だけを使い、ローカルタイムゾーンの Date コンストラクタや setDate は使っていません。ブラウザのローカルタイムゾーンで日付を扱うと、夏時間(サマータイム)を採用する地域では1日の長さが23時間や25時間になる日があり、単純な +1日 の演算がずれることがあります。UTCには夏時間が存在しないため、この問題を避けられます。うるう年の判定もJavaScriptの Date オブジェクトの仕様(ECMA-262のグレゴリオ暦計算)に従い、2月の日数は自動的に28日・29日が正しく切り替わります。年・月・日の内訳は、後ろの日付から前の日付を順に引き、繰り下がりが起きたらその月の末日を足し戻す方式(満年齢の計算と同じ考え方)で求めています。
現場の落とし穴:「月」を単位にした日付の加減算は、末日をまたぐと結果が直感と食い違うことがあります。例えば1月31日の1か月後は、2月には31日が存在しないため2月28日(うるう年なら29日)に自動調整されます。逆に「1月末日 + 1か月 + 1か月」のように連続で加算すると、途中でクランプされた日付を起点にするため、単純な2か月後の日付(3月31日)にはならず3月28日になる、という食い違いが起きがちです。月次バッチの実行日をずらす際は、この丸めの挙動を必ず確認してください。
よくある質問
Q. 「初日を含める」は年月日の内訳にも反映されますか?
A. いいえ。年月日の内訳(暦どおりの差)は常に2つの日付そのものの差で、「初日を含める」の設定は日数・週数の合計値にのみ影響します。
Q. 祝日はこのツールが自動で判定してくれますか?
A. していません。日本の祝日は法改正や年によって日付が変わるため、内閣府が公表する「国民の祝日について」の一覧を確認し、対象年の祝日をご自身で入力してください。
Q. 終了日を開始日より前にするとどうなりますか?
A. エラーにはせず、符号を無視した日数(絶対値)で計算し、その旨を注記表示します。
関連ツール
最終更新・根拠の確認日: 2026-09-10 · カテゴリ: 日付・時間