VB.NETで日付を加算・減算する方法を完全ガイド!AddDaysやAddMonthsの使い方
生徒
「先生、プログラミングで『今日から一週間後の日付』や『三ヶ月前の日付』を計算する方法ってありますか?」
先生
「もちろんありますよ!VB.NETには日付を足したり引いたりするための、とても便利な機能が備わっているんです。」
生徒
「日付の計算って、月によって30日だったり31日だったりして難しそうですが、パソコンが自動でやってくれるんですか?」
先生
「その通りです!うるう年や月末の処理も全部パソコンにお任せで大丈夫です。具体的な命令の使い方を見ていきましょう!」
1. 日付の加算・減算とは?
プログラミングにおける日付の加算(かさん)とは、ある日付に数日や数ヶ月を足して「未来の日付」を求めることです。逆に減算(げんざん)は、数日や数ヶ月を引いて「過去の日付」を求めることを指します。VB.NET(ブイビー・ドットネット)というプログラミング言語を使えば、カレンダーを見ながら手作業で計算する必要はありません。
例えば、「レンタル商品の返却期限(3日後)」を計算したり、「次回の定期検診(6ヶ月後)」を算出したりする際にこの機能を使います。パソコンを触ったことがない方でも大丈夫です。「今の日付に対して、命令を送るだけ」というシンプルな仕組みになっています。この仕組みを理解すると、スケジュール管理アプリのような便利なツールが作れるようになります。
2. AddDaysを使って「日」を足す方法
最もよく使われるのが、日付に日数を足す AddDays(アド・デイズ) という命令です。英語でAddは「足す」、Daysは「日」という意味です。使い方は、日付データが入っている「変数(へんすう)」というデータの箱に対して、何日足したいかを指定するだけです。
ここで言う「変数」とは、データを一時的に保存しておくための名前付きの箱のことです。日付を入れる箱は DateTime(データタイム)という形をしています。AddDaysの便利なところは、月末の処理を自動で行ってくれる点です。例えば、1月30日に2日足すと、自動的に「2月1日」と計算してくれます。これは人間が計算すると間違いやすいポイントなので、パソコンに任せるのが一番安全です。
' 今日の日付を取得して箱に入れます
Dim kyo As DateTime = DateTime.Now
' 10日後の日付を計算して別の箱に入れます
Dim juNichiGo As DateTime = kyo.AddDays(10)
' 結果を画面に表示します
Console.WriteLine("今日は: " & kyo.ToShortDateString())
Console.WriteLine("10日後は: " & juNichiGo.ToShortDateString())
今日は: 2026/03/26
10日後は: 2026/04/05
3. AddMonthsを使って「月」を操作する
次に、月単位で日付を移動させる AddMonths(アド・マンス) を紹介します。これは「来月の同じ日」や「半年前の日付」を求めたいときに使います。月によって日数が異なる(28日から31日まである)複雑な計算も、この命令一つで解決します。
もし、31日まである月から30日までしかない月へ移動した場合(例えば8月31日の1ヶ月後)、VB.NETは賢いので、その月の最終日である「9月30日」として結果を出してくれます。これを自分ですべてプログラミングするのは大変ですが、標準の機能を使えば一瞬で終わります。パソコン初心者の方は、まずこの「便利な道具がすでにある」ということを知るのが上達の近道です。
' 今日の日付を準備
Dim kyo As DateTime = DateTime.Today
' 3ヶ月後の日付を計算
Dim sanKetsuGo As DateTime = kyo.AddMonths(3)
Console.WriteLine("今の月: " & kyo.Month & "月")
Console.WriteLine("3ヶ月後: " & sanKetsuGo.Month & "月")
今の月: 3月
3ヶ月後: 6月
4. AddYearsを使って「年」を加算する
一年後や数年後を計算したい場合は AddYears(アド・イヤーズ) を使います。免許証の更新日や、長期的な契約の終了日を計算するシステムなどでよく使われます。この命令の凄いところは、四年に一度の「うるう年」にもしっかりと対応している点です。
例えば、2月29日生まれの人の一年後を計算すると、うるう年ではない場合は自動的に2月28日として扱われます。このように、現実の世界の複雑なルールをプログラム側ですべて考慮してくれているのがVB.NETの素晴らしい点です。使い方は他の命令と同じで、カッコの中に足したい年数を数字で入れるだけです。100年後の計算だって、一瞬で完了します。
' 特定の日付(2024年のうるう年)を設定
Dim uruuNichi As New DateTime(2024, 2, 29)
' 1年後の日付を計算
Dim ichiNenGo As DateTime = uruuNichi.AddYears(1)
Console.WriteLine("元の日付: " & uruuNichi.ToShortDateString())
Console.WriteLine("1年後の日付: " & ichiNenGo.ToShortDateString())
元の日付: 2024/02/29
1年後の日付: 2025/02/28
5. 引き算(減算)をしたいときはどうする?
「足し算の命令はあるけど、引き算の命令が見当たらないな?」と思った方もいるかもしれません。実はVB.NETでは、AddDaysやAddMonthsのカッコの中に マイナスの数字 を入れることで引き算を行います。専用の「SubtractDays」のような命令を探す必要はありません。
例えば、昨日の日付を知りたいときは AddDays(-1) と書き、一年前を知りたいときは AddYears(-1) と書きます。「マイナスを足す」という考え方は、数学に慣れていないと少し不思議に感じるかもしれませんが、プログラミングではとても一般的なやり方です。これさえ覚えておけば、未来も過去も自由自在に時間を移動できるようになります。
Dim ima As DateTime = DateTime.Now
' マイナスの数字を入れて「1週間前」を計算
Dim isshukanMae As DateTime = ima.AddDays(-7)
' マイナスの数字を入れて「1年前」を計算
Dim ichiNenMae As DateTime = ima.AddYears(-1)
Console.WriteLine("1週間前は: " & isshukanMae.ToShortDateString())
Console.WriteLine("1年前は: " & ichiNenMae.ToShortDateString())
1週間前は: 2026/03/19
1年前は: 2025/03/26
6. 時間や分を細かく操作する方法
日付(年月日)だけでなく、時間や分、秒といった細かい単位も操作できます。これらには AddHours(時間を足す)、AddMinutes(分を足す)、AddSeconds(秒を足す)という命令が用意されています。これらは、カップラーメンのタイマーを作ったり、Webサイトで「あと30分でセッションが切れます」といった警告を出したりする際に使われます。
これらの細かい計算も、日付の加算と同様に、繰り上がりを自動で計算してくれます。59分に1分足せば、自動的に時間が1繰り上がり、23時59分なら翌日の0時になります。自分ですべて計算しようとすると非常に複雑な処理になりますが、VB.NETの命令を使えば、たった一行で完璧な計算結果が得られるのです。パソコン初心者の方も、まずは色々な数字を足したり引いたりして、結果がどう変わるか実験してみるのが一番の学習になります。
7. 日付計算をマスターして一歩進んだ開発を
ここまで、日付の加算と減算について学んできました。いかがでしたでしょうか。プログラミングにおいて「時間を操る」ことができるようになると、作れるアプリの幅が格段に広がります。最初は命令を覚えるのが大変かもしれませんが、すべて Add(足す)+ 単位 という名前になっているので、規則性が分かれば簡単です。
実務でプログラミングをする際も、日付の計算ミスは大きな問題に繋がりやすい部分です。そのため、自分で計算式を書くのではなく、今回紹介した AddDays や AddMonths といった標準の機能を正しく使うことが、バグ(プログラムの不具合)のない高品質なシステムを作るための基本となります。今回学んだ基礎を大切にして、ぜひ実際のコードを書いて、パソコンの上で日付が魔法のように変わる様子を体験してみてください!