VB.NETで月末・月初の日付を取得する方法!初心者向け完全ガイド
生徒
「カレンダーアプリを作ってみたいのですが、今月の最初の日や最後の日をプログラムで出すことってできますか?」
先生
「もちろんです!VB.NETには日付を計算するための便利な仕組みがたくさん用意されていますよ。」
生徒
「2月は28日までだったり29日までだったりしますけど、それも自動で判定してくれるんでしょうか?」
先生
「その通りです。うるう年なども気にせず、簡単な命令一つで月末の日付を割り出すことができます。まずは基本から一緒に見ていきましょう!」
1. 日付操作の基本!DateTime型とは?
パソコンの中で日付や時間を扱うとき、VB.NETではDateTime(デートタイム)型という専用の箱を使います。プログラムの世界では、数字は「整数型」、文字は「文字列型」というようにデータの種類を分けて管理しますが、日付も一つの特別なデータとして扱われます。
例えば、今日の年月日や、今この瞬間の時刻などをこの「DateTime」という箱に入れておくことで、後から「1ヶ月後を表示して」とか「今日は何曜日?」といった命令を出すことができるようになります。プログラミング未経験の方には少し難しく感じるかもしれませんが、カレンダーの一マス一マスにデータが入っているイメージを持つと分かりやすいでしょう。
日付を操作する第一歩は、このDateTimeを使って「今がいつなのか」をプログラムに教えることから始まります。
2. 今日の日付を取得してみよう
まずは、全ての基本となる「今日の日付」を取得する方法を学びましょう。VB.NETではDateTime.NowまたはDate.Todayという命令を使います。
Nowを使うと現在の日付と時刻(秒単位まで)が取得でき、Todayを使うと時刻が「0時0分0秒」に固定された日付のみの情報が取得できます。事務処理やカレンダー作成では、時刻の情報が不要なことが多いため、Todayをよく使います。以下のコードで、実際にどのように書くのか見てみましょう。
' 今日の日付を取得して表示するプログラム
Dim kyo As Date = Date.Today
Console.WriteLine("今日は " & kyo.ToString("yyyy年MM月dd日") & " です")
実行結果は以下のようになります。
今日は 2026年03月28日 です
ここで出てきたDimというのは「これから変数(データを書き込む箱)を使いますよ」という宣言です。ToStringは、日付のデータを私たちが読みやすい文字の形に変換する命令です。
3. 月初の日付を求める方法
「月初の日付」とは、その月の1日のことです。これは計算するまでもなく、年と月の情報さえあれば、日は必ず「1」になります。VB.NETでは、新しい日付を作るときにNew Date(年, 月, 日)という書き方をします。
現在の年と月を使って、日を「1」に指定すれば、簡単にその月の初日を求めることができます。以下のサンプルコードでは、今月が何月であっても自動的に1日を指し示すように工夫しています。
' 今月の月初(1日)を求める
Dim kyo As Date = Date.Today
Dim gessho As New Date(kyo.Year, kyo.Month, 1)
Console.WriteLine("今月の月初は: " & gessho.ToShortDateString())
実行結果は以下の通りです。
今月の月初は: 2026/03/01
kyo.Yearは「今の年」、kyo.Monthは「今の月」を取り出す命令です。これらを組み合わせて、新しい日付の「1日」を作っているわけですね。非常にシンプルで分かりやすい方法です。
4. 月末の日付を求めるテクニック(DaysInMonth)
月初は必ず1日ですが、月末は月によって30日だったり31日だったり、はたまた2月のように28日や29日だったりします。これを一つずつプログラムで判定するのは大変ですよね。
そこで便利なのが、DateTime.DaysInMonthという命令です。これは、指定した年と月に「何日まであるか」を数字で教えてくれる魔法のような機能です。これを使えば、どんな月でも正確に末日を知ることができます。
' 今月の月末の日付を求める
Dim kyo As Date = Date.Today
Dim nissu As Integer = DateTime.DaysInMonth(kyo.Year, kyo.Month)
Dim getsunatsu As New Date(kyo.Year, kyo.Month, nissu)
Console.WriteLine("今月の月末は: " & getsunatsu.ToShortDateString())
実行結果は以下のようになります。
今月の月末は: 2026/03/31
Integerというのは「整数(1, 2, 3...)」を入れるための箱の種類です。まずその月が何日まであるかを数えて、その数字を日付の「日」の部分に当てはめることで、月末の日付が完成します。うるう年の2月でも、この方法なら間違いなく29日を導き出せます。
5. 翌月の1日から1日引いて月末を出す方法
プログラミングには、別の考え方で月末を出す方法もあります。それは「来月の1日の、1日前」を計算するという方法です。カレンダーを思い浮かべてみてください。3月31日の次の日は4月1日ですよね。逆に言えば、4月1日から1日分時間を戻せば、3月の最終日になります。
VB.NETには、日付を引き算したり足し算したりするAddDaysという便利な命令があります。これを使って、翌月の月初から1日引いてみましょう。
' 来月の1日から1日引いて今月末を出す
Dim kyo As Date = Date.Today
Dim raigetsuGessho As New Date(kyo.Year, kyo.Month, 1).AddMonths(1)
Dim getsunatsu As Date = raigetsuGessho.AddDays(-1)
Console.WriteLine("計算で出した月末: " & getsunatsu.ToShortDateString())
実行結果は以下のようになります。
計算で出した月末: 2026/03/31
AddMonths(1)で1ヶ月進め、AddDays(-1)で1日戻しています。マイナスの数字を入れることで「引き算」ができるのがポイントです。パズルのようで面白い考え方ですね。この方法は、特定の月の末日だけでなく、「3ヶ月後の末日」などを計算するときにも応用がききます。
6. 先月の月末や来月の月初を求めてみよう
ここまでの知識を応用すれば、過去や未来の日付も自由自在です。例えば、家計簿アプリを作るなら「先月の末日」の情報が必要になるかもしれません。また、支払日の計算などで「来月の1日」を知りたいこともあるでしょう。
日付の足し算・引き算をマスターすると、プログラムの幅がぐっと広がります。以下のコードでは、現在の月を基準に、前後の月の日付を計算する方法をまとめて紹介します。
' いろいろな日付計算
Dim kyo As Date = Date.Today
' 先月の末日(今月1日の1日前)
Dim sengetsuMatsu As Date = New Date(kyo.Year, kyo.Month, 1).AddDays(-1)
' 来月の月初(今月1日の1ヶ月後)
Dim raigetsuGessho As Date = New Date(kyo.Year, kyo.Month, 1).AddMonths(1)
Console.WriteLine("先月末: " & sengetsuMatsu.ToShortDateString())
Console.WriteLine("来月頭: " & raigetsuGessho.ToShortDateString())
実行結果は以下のようになります。
先月末: 2026/02/28
来月頭: 2026/04/01
このように、基準となる日を決めてから「何ヶ月進めるか」「何日戻すか」を順番に指定していくだけで、複雑なカレンダー計算もあっという間に完了します。パソコンは計算が得意なので、人間がカレンダーをめくって数えるよりも正確で速いです。
7. 初心者が間違いやすいポイントとコツ
日付の操作で初心者が一番つまずきやすいのは、月をまたぐ計算です。例えば、1月31日に「1ヶ月足す」という命令を出すと、2月には31日がないため、自動的に2月の末日に調整してくれる親切な機能もありますが、自分で計算式を作るときは注意が必要です。
そのため、今回紹介したように「一度必ず1日に戻してから計算する」というのが、バグ(プログラムのミス)を減らす最大のコツです。1日であれば、どの月にも必ず存在します。1日を基準に移動してから月末を探すという手順を癖にしていれば、予期せぬエラーを防ぐことができます。
また、日付を表示するときにToString("yyyy/MM/dd")のように書くと、月や日が1桁のときに「03」のように0で埋めてくれるので、見た目がきれいな表などを作ることができます。こういったちょっとしたテクニックも、アプリ作りには欠かせない要素です。
8. 日付操作をマスターしてアプリを作ろう
VB.NETでの日付操作、いかがでしたか?「月初は1日を指定するだけ」「月末は専用の命令を使うか、翌月から1日引く」というルールさえ覚えてしまえば、実はそれほど難しくありません。
日付の計算ができるようになると、期限付きのToDoリストや、誕生日のカウントダウン、毎月の売上集計ソフトなど、実用的なツールが作れるようになります。プログラミング未経験の方は、まずは今回紹介したコードをそのままコピーして動かしてみてください。数字を少し変えてみて、結果がどう変わるか実験するのが上達への一番の近道です。
パソコンの操作に慣れていない方でも、一行ずつゆっくり意味を理解していけば大丈夫です。VB.NETは日本語に近い感覚で書ける部分も多いので、ぜひ楽しみながら学習を続けていきましょう。日付を自由に操れるようになれば、あなたはもう初心者脱出の一歩を踏み出しています!