開始日と終了日を入力してください。2つの日付の間の日数のほか、終了日も1日と数えた日数(両端入れ)、週数・月数・年月日での表し方もまとめて計算します。
このページでできること
- 開始日と終了日を入れるだけで、2つの日付の間の日数がその場でわかります。片方を空欄にすれば「今日から試験日まであと何日」「記念日から今日で何日」もすぐ計算できます
- 「開始日を数えない日数(日付の引き算)」と「開始日と終了日を両方数える日数(両端入れ)」を同時に表示するので、宿泊数・服薬日数・日割り計算などの数え方の違いで迷いません
- 同じ期間を「◯年◯ヶ月◯日」「◯ヶ月」「◯週」で表した値もまとめて表示します
- 日数の数え方のやさしい解説・Excel/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
「今日が7月3日で、試験日が翌年1月16日なら残り197日」——残り日数がわかると、「過去問10年分を残り200日で解くなら、20日で1年分」のように、学習計画を感覚ではなく数字で立てられます。
カウントダウンは今日を数えない引き算の日数(初日不算入)で数えるのが自然です。前日には「あと1日」、当日には「あと0日」になります。
8月13日にチェックインして8月16日にチェックアウトする旅行は、引き算で \(16 - 13 = 3\) 泊、両端入れで数えると4日間、つまり「3泊4日」です。
宿代は泊数(引き算)、Wi-Fiレンタルや国内旅行保険は日数(両端入れ)で数えるのが普通なので、2つの数え方の違いを知っていると見積もりを間違えません。(レンタカーのように暦の日数ではなく「24時間ごと」で料金を数えるものもあります)
「7月1日から7日分」の薬は、初日も数える両端入れで、最後に飲む日は7月7日です。引き算(\(7 - 1 = 6\))で考えると1日ずれてしまいます。
「次の受診日までに薬が足りるか」の確認は、処方日数(両端入れ)と受診日までの日数(引き算)という、数え方の違う2つの日数を比べる作業です。この違いを知っていると飲み忘れ・もらい忘れを防げます。
7月10日に入居した月の家賃は、10日から31日までの22日分(両端入れ:\(31 - 10 + 1 = 22\))を31日で割った額で日割りされるのが一般的です。入居日当日も部屋を使うので、初日を数える両端入れになります。
月の途中の入退社の給与計算も同じ考え方です。日数の数え方(両端入れかどうか)は契約によって異なる場合があるので、契約書の定めと突き合わせて確認するのに使えます。
利息は「元金 × 利率 × 日数 ÷ 365」のように日数に比例して計算され、この日数の数え方に「片落とし」(どちらか一方だけ数える=引き算と同じ)や「両端入れ」という金融用語があります。日本の預金利息では片落としが一般的とされます。
例えば4月1日に預けて4月30日に引き出すと、片落としなら29日分です。数え方1日分の違いが利息の差になるので、金融商品の説明書にある「付利日数」を読み解くのにこの知識が役立ちます。
妊娠週数は最終月経の開始日を0日目として数え、280日目(\(280 = 7 \times 40\) なので妊娠40週0日)が出産予定日の目安とされます。「今日は妊娠何週何日か」は、開始日からの日数を7で割る、このページの週の式そのものです。
健診の記録や自治体の手続きはすべて週数で進むので、日数と週数を行き来できると母子手帳の記録がぐっと読みやすくなります。
式
用語・記号の解説
記号
| \(D\) | ディー | 2つの日付の間の日数(開始日を0日目と数える、日付の引き算の答え)。日数を表す英語 Days の頭文字です。 |
| \(N_1\)・\(N_2\) | エヌ・いち、エヌ・に | 開始日(\(N_1\))と終了日(\(N_2\))に振った通し番号。Excelのシリアル値(1900年1月1日を1番とする連番)と同じ考え方です。 |
| \(D'\) | ディー・ダッシュ | 開始日と終了日の両方を1日と数えた日数(両端入れ)。\(D' = D + 1\) です。ダッシュ(′)は「もとの量を少し変えたもの」を表すときによく使われる記号です。 |
| \(W\)・\(r\) | ダブリュー、アール | 週数(\(W\))と端数の日(\(r\))。日数 \(D\) を7で割った商が \(W\)、余りが \(r\) です。 |
| \(y\)・\(m\)・\(d\) | ワイ、エム、ディー(小文字) | 期間を「\(y\) 年 \(m\) ヶ月 \(d\) 日」に分けたときのそれぞれの部分。(例:1年2ヶ月10日なら \(y = 1\)、\(m = 2\)、\(d = 10\)) |
| \(M\) | エム(大文字) | 期間を月だけで表した総月数。\(M = 12y + m\) で求めます。(例:1年2ヶ月なら \(M = 14\) ヶ月) |
用語
| 暦日 | れきじつ | カレンダー上の1日1日のこと。土日や祝日も区別せずに数えた日数を「暦日数」と呼び、営業日(土日祝日を除いた日数)と区別します。このページで計算するのは暦日数です。 |
| 初日不算入 | しょにちふさんにゅう | 期間を数えるとき、最初の日(初日)を数えに入れない数え方の原則。日付の引き算はこの数え方で、開始日が0日目になります。日本の民法140条でも、期間の計算は初日不算入が原則と定められています(「今日から3日以内」は明日から数え始める、など)。 |
| 両端入れ | りょうはいれ | 開始日と終了日の両方を1日と数える数え方。日付の引き算の答えに1を足した値になります。薬の服用日数・レンタル期間・工事の工期など「その日自体を使う」場面で使われます。 |
| 片落とし | かたおとし | 開始日と終了日のどちらか一方だけを数える数え方で、答えは日付の引き算と同じ値になります。銀行の利息計算などで使われる言葉です。ちなみに両方とも数えない「両端落とし」は引き算の答えから1を引いた値です。 |
| 応当日 | おうとうび | 翌月や翌年の「同じ日付」のこと。1月15日の翌月の応当日は2月15日です。「◯ヶ月」の端数は、この応当日に達したかどうかで数えます(民法の期間計算と同じ考え方)。1月31日のように翌月に同じ日付がない場合はその月の末日で代用し、末日が終わった時点で1ヶ月と数えます。 |
| うるう年 | うるうどし | 2月29日がある年。原則4年に1回ですが、100で割り切れる年は平年、400で割り切れる年はうるう年です(2100年は平年、2000年はうるう年)。この計算機はカレンダー通りに数えるので、期間に2月29日が入っていればきちんと1日と数えられます。 |
| シリアル値 | しりあるち | Excelやスプレッドシートが日付を管理するために使っている通し番号。1900年1月1日を1として、1日ごとに1ずつ増えます(2025年1月1日は45658)。Excelで日付同士の引き算がそのままできるのは、日付の正体がこの数値だからです。なお、Excelには実在しない「1900年2月29日」を1日と数えてしまう古くからの仕様があるため、この番号は実際の暦で数えた場合より1つ大きくなっています(引き算で日数を求める分には影響しません)。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
つまずいたら、この表の内容に戻って復習するのが近道です。
| 暦のしくみ(小学2〜3年) |
|
| 引き算の筆算(小学2〜3年) |
|
| 余りのある割り算(小学3年) |
|
| 掛け算の筆算(小学3年) |
|
Excelで計算する方法
| 開始日 | 2025/1/1 |
| 終了日 | 2025/3/1 |
| 日数(開始日を数えない) | =B2-B1 |
| 両端入れ(開始日と終了日を両方数える) | =B2-B1+1 |
| 開始日 | 2025/1/1 |
| 終了日 | 2025/3/1 |
| 週数 | =INT((B2-B1)/7) |
| 端数の日 | =MOD(B2-B1,7) |
| 開始日 | 2025/1/1 |
| 終了日 | 2025/3/1 |
| 年の数 | =DATEDIF(B1,B2,"Y") |
| 端数の月 | =DATEDIF(B1,B2,"YM") |
| 端数の日 | =DATEDIF(B1,B2,"MD") |
| 総月数 | =DATEDIF(B1,B2,"M") |
| 過去の日付(記念日など) | 2025/1/1 |
| その日から今日までの日数 | =TODAY()-B1 |
| 未来の日付(試験日など) | 2027/1/16 |
| 今日からその日までの日数(あと何日) | =B3-TODAY() |
3つ目の表のDATEDIF関数は、3つ目の引数が "Y"=年の数、"YM"=端数の月、"MD"=端数の日、"M"=総月数という意味です(入力候補に出てこない隠れ関数ですが、昔のExcelから一貫して使えます)。ただし "MD" は月末がらみの日付(31日始まりなど)で本計算機の応当日方式と1〜2日ずれたり、まれにおかしな値になったりすることが知られています。日の端数が大事な場面では本計算機の結果を目安にしてください。
4つ目の表のようにTODAY()を使うと、ファイルを開くたびに「今日まで・今日から」の日数に自動更新されて便利です。
Googleスプレッドシートで計算する方法
| 開始日 | 2025/1/1 |
| 終了日 | 2025/3/1 |
| 日数(開始日を数えない) | =B2-B1 |
| 両端入れ(開始日と終了日を両方数える) | =B2-B1+1 |
| 開始日 | 2025/1/1 |
| 終了日 | 2025/3/1 |
| 週数 | =INT((B2-B1)/7) |
| 端数の日 | =MOD(B2-B1,7) |
| 開始日 | 2025/1/1 |
| 終了日 | 2025/3/1 |
| 年の数 | =DATEDIF(B1,B2,"Y") |
| 端数の月 | =DATEDIF(B1,B2,"YM") |
| 端数の日 | =DATEDIF(B1,B2,"MD") |
| 総月数 | =DATEDIF(B1,B2,"M") |
| 過去の日付(記念日など) | 2025/1/1 |
| その日から今日までの日数 | =TODAY()-B1 |
| 未来の日付(試験日など) | 2027/1/16 |
| 今日からその日までの日数(あと何日) | =B3-TODAY() |
引き算の結果が日付の形で表示されたら「表示形式」→「数字」に変える点と、DATEDIFの "MD" が月末がらみで1〜2日ずれることがある点も、Excelと同じです。
Pythonで計算する方法
from datetime import date
start = date(2025, 1, 1) # 開始日
end = date(2025, 3, 1) # 終了日(今日にするなら date.today() )
days = (end - start).days # 2つの日付の間の日数(開始日を数えない)
days_inclusive = days + 1 # 開始日と終了日を両方数える(両端入れ)
weeks, extra_days = divmod(days, 7) # 週数と端数の日
# 総月数:年の差×12+月の差。終了日の「日」が開始日より手前なら、最後のひと月がまだ満ちていないので1引く
total_months = (end.year - start.year) * 12 + (end.month - start.month) - (end.day < start.day)
print(f"日数: {days}日(両端入れなら {days_inclusive}日)")
print(f"週数: {weeks}週と{extra_days}日")
print(f"総月数: {total_months}ヶ月")
数式記述言語(LaTeX等)での書き方(コピペ可)
D = N₂ − N₁
D = N_2 - N_1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>D</mi><mo>=</mo>
<msub><mi>N</mi><mn>2</mn></msub><mo>−</mo>
<msub><mi>N</mi><mn>1</mn></msub>
</mrow>
</math>
D = N_2 - N_1
days = DateDifference[startDate, endDate, "Day"]
days := n2 - n1;
days_between = days(end_date - start_date);
D = N_2 - N_1
D′ = D + 1
D' = D + 1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mi>D</mi><mo>′</mo></msup><mo>=</mo>
<mi>D</mi><mo>+</mo><mn>1</mn>
</mrow>
</math>
D' = D + 1
daysInclusive = days + 1
daysInclusive := days + 1;
days_inclusive = days_between + 1;
D' = D + 1
D = 7W + r (0 ≤ r ≤ 6)
D = 7W + r\ \ (0 \le r \le 6)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>D</mi><mo>=</mo>
<mn>7</mn><mi>W</mi><mo>+</mo><mi>r</mi><mspace width="0.7em"/>
<mo>(</mo><mn>0</mn><mo>≤</mo><mi>r</mi><mo>≤</mo><mn>6</mn><mo>)</mo>
</mrow>
</math>
D = 7W + r (0 <= r <= 6)
{weeks, remDays} = QuotientRemainder[days, 7]
weeks := iquo(days, 7); remDays := irem(days, 7);
num_weeks = floor(days_between/7); rem_days = mod(days_between, 7);
D = 7W + r (0 ≤ r ≤ 6)
M = 12y + m
M = 12y + m
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>M</mi><mo>=</mo>
<mn>12</mn><mi>y</mi>
<mo>+</mo><mi>m</mi>
</mrow>
</math>
M = 12y + m
totalMonths = 12*years + extraMonths
totalMonths := 12*years + extraMonths;
total_months = 12*num_years + extra_months;
M = 12y + m
ChatGPT に聞いて計算してもらう方法
あなたは日数計算アシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。 開始日は2025年1月1日、終了日は2025年3月1日です。 次の値をそれぞれ求めてください。 1. 2つの日付の間の日数(開始日を0日目と数える、日付の引き算の日数) 2. 開始日と終了日を両方1日と数えた日数(両端入れ) 3. 1の日数を「◯週と◯日」で表した値 計算に使ったコードと、実行結果の数値を示してください。
計算ドリル(演習問題)
このページの式を、自分の手で計算できるようになるための演習問題です。
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
