カテゴリ: VB.NET 更新日: 2026/04/04

VB.NETで月末・月初の日付を取得する方法!初心者向け完全ガイド

VB.NETで月末や月初の日付を求める方法
VB.NETで月末や月初の日付を求める方法

先生と生徒の会話形式で理解しよう

生徒

「カレンダーアプリを作ってみたいのですが、今月の最初の日や最後の日をプログラムで出すことってできますか?」

先生

「もちろんです!VB.NETには日付を計算するための便利な仕組みがたくさん用意されていますよ。」

生徒

「2月は28日までだったり29日までだったりしますけど、それも自動で判定してくれるんでしょうか?」

先生

「その通りです。うるう年なども気にせず、簡単な命令一つで月末の日付を割り出すことができます。まずは基本から一緒に見ていきましょう!」

1. 日付操作の基本!DateTime型とは?

1. 日付操作の基本!DateTime型とは?
1. 日付操作の基本!DateTime型とは?

パソコンの中で日付や時間を扱うとき、VB.NETではDateTime(デートタイム)型という専用の箱を使います。プログラムの世界では、数字は「整数型」、文字は「文字列型」というようにデータの種類を分けて管理しますが、日付も一つの特別なデータとして扱われます。

例えば、今日の年月日や、今この瞬間の時刻などをこの「DateTime」という箱に入れておくことで、後から「1ヶ月後を表示して」とか「今日は何曜日?」といった命令を出すことができるようになります。プログラミング未経験の方には少し難しく感じるかもしれませんが、カレンダーの一マス一マスにデータが入っているイメージを持つと分かりやすいでしょう。

日付を操作する第一歩は、このDateTimeを使って「今がいつなのか」をプログラムに教えることから始まります。

2. 今日の日付を取得してみよう

2. 今日の日付を取得してみよう
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. 月初の日付を求める方法

3. 月初の日付を求める方法
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)

4. 月末の日付を求めるテクニック(DaysInMonth)
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日引いて月末を出す方法

5. 翌月の1日から1日引いて月末を出す方法
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. 先月の月末や来月の月初を求めてみよう

6. 先月の月末や来月の月初を求めてみよう
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. 初心者が間違いやすいポイントとコツ

7. 初心者が間違いやすいポイントとコツ
7. 初心者が間違いやすいポイントとコツ

日付の操作で初心者が一番つまずきやすいのは、月をまたぐ計算です。例えば、1月31日に「1ヶ月足す」という命令を出すと、2月には31日がないため、自動的に2月の末日に調整してくれる親切な機能もありますが、自分で計算式を作るときは注意が必要です。

そのため、今回紹介したように「一度必ず1日に戻してから計算する」というのが、バグ(プログラムのミス)を減らす最大のコツです。1日であれば、どの月にも必ず存在します。1日を基準に移動してから月末を探すという手順を癖にしていれば、予期せぬエラーを防ぐことができます。

また、日付を表示するときにToString("yyyy/MM/dd")のように書くと、月や日が1桁のときに「03」のように0で埋めてくれるので、見た目がきれいな表などを作ることができます。こういったちょっとしたテクニックも、アプリ作りには欠かせない要素です。

8. 日付操作をマスターしてアプリを作ろう

8. 日付操作をマスターしてアプリを作ろう
8. 日付操作をマスターしてアプリを作ろう

VB.NETでの日付操作、いかがでしたか?「月初は1日を指定するだけ」「月末は専用の命令を使うか、翌月から1日引く」というルールさえ覚えてしまえば、実はそれほど難しくありません。

日付の計算ができるようになると、期限付きのToDoリストや、誕生日のカウントダウン、毎月の売上集計ソフトなど、実用的なツールが作れるようになります。プログラミング未経験の方は、まずは今回紹介したコードをそのままコピーして動かしてみてください。数字を少し変えてみて、結果がどう変わるか実験するのが上達への一番の近道です。

パソコンの操作に慣れていない方でも、一行ずつゆっくり意味を理解していけば大丈夫です。VB.NETは日本語に近い感覚で書ける部分も多いので、ぜひ楽しみながら学習を続けていきましょう。日付を自由に操れるようになれば、あなたはもう初心者脱出の一歩を踏み出しています!

カテゴリの一覧へ
新着記事
New1
VB.NET
VB.NETで月末・月初の日付を取得する方法!初心者向け完全ガイド
New2
ASP.NET
ASP.NET MVCで学ぶセッションと認証の仕組みをやさしく解説!初心者でも安心して理解できる入門ガイド
New3
VB.NET
VB.NETで名前空間を整理する方法を完全ガイド!初心者でもわかるNamespaceの基本
New4
ASP.NET
ASP.NET CoreのCookie認証を完全ガイド!初心者でもわかるログインの仕組み
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETのインストール方法まとめ!Visual Studioを使った環境構築手順
No.2
Java&Spring記事人気No2
VB.NET
VB.NETプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.3
Java&Spring記事人気No3
VB.NET
VB.NETのDateTime型を完全マスター!日付と時間の操作を初心者向けに解説
No.4
Java&Spring記事人気No4
ASP.NET
ASP.NETを安定稼働させるためのIISアプリケーションプール設定完全ガイド【初心者向け】
No.5
Java&Spring記事人気No5
VB.NET
VB.NETの構文ルールまとめ!インデント・改行・予約語など初心者が最初に覚えるべきポイント
No.6
Java&Spring記事人気No6
ASP.NET
ASP.NET WebFormsとは?基本概念と仕組みを初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
VB.NET
VB.NETで日付を文字列に変換!ToStringやFormatの使い方を徹底解説
No.8
Java&Spring記事人気No8
VB.NET
VB.NETのコンストラクタと初期化処理の書き方を初心者向けに解説