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

VB.NETで日付と時間を比較・計算する方法!CompareとSubtractを完全解説

VB.NETで日時を比較する方法(Compare, Subtract)
VB.NETで日時を比較する方法(Compare, Subtract)

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

生徒

「先生、VB.NETで作っているアプリで『期限が過ぎているかチェックする』機能を作りたいんです。どうすればいいですか?」

先生

「それなら、日付の比較や引き算を使えば解決しますよ。CompareやSubtractという命令が役に立ちます。」

生徒

「日付同士を比べたり、引き算したりできるんですね!なんだか難しそうですが、私にもできますか?」

先生

「大丈夫ですよ。基本的な考え方は数字の比較と同じです。具体的なやり方を詳しく説明していきましょう!」

1. VB.NETで日付を比較する基本

1. VB.NETで日付を比較する基本
1. VB.NETで日付を比較する基本

プログラミング未経験の方がまず知っておくべきことは、VB.NETでは「日付」というデータも、数字と同じように比べることができるという点です。例えば、今日と明日を比べれば、明日の方が「大きい(未来)」と判断されます。このように、時間の前後関係を判定することを日付の比較と呼びます。

パソコンを初めて触る方にとって、日付を比べるというのは少しイメージしにくいかもしれませんが、「カレンダーのページが後ろにある方が大きい」と考えてみてください。VB.NETでは、この比較を行うためにCompareという命令や、もっと直感的な不等号を使う方法が用意されています。これらをマスターすることで、「期限切れチェック」や「予約日の前後確認」といった便利な機能が作れるようになります。

2. 一番簡単!不等号を使った日付の比較

2. 一番簡単!不等号を使った日付の比較
2. 一番簡単!不等号を使った日付の比較

VB.NETで最も直感的に日付を比べる方法は、算数で使う「不等号」を使う方法です。大なり記号>や小なり記号<を使うことで、どちらの日付が未来か過去かを判定できます。特別な命令を覚える前に、まずはこの簡単な方法から試してみましょう。


' 今日の日付と期限の日付を用意します
Dim kyo As Date = Date.Today
Dim kigen As New Date(2026, 12, 31)

' 不等号を使って比較します
If kyo < kigen Then
    Console.WriteLine("まだ期限内です。")
Else
    Console.WriteLine("期限が過ぎています!")
End If

実行結果は以下のようになります。


まだ期限内です。

ここで使っているDate.Todayは「今日の日付」、New Date(2026, 12, 31)は「指定した特定の日付」を指しています。このように、数字を比べるのと同じ感覚で書けるのがVB.NETの優しいところです。これを応用すれば、スケジュール管理ソフトなども簡単に作れますね。

3. 厳密に判定するDateTime.Compareメソッド

3. 厳密に判定するDateTime.Compareメソッド
3. 厳密に判定するDateTime.Compareメソッド

次に紹介するのは、DateTime.Compare(デートタイム・コンペア)という命令です。この命令は、二つの日付を比較して「1」「0」「-1」という三つの数字で結果を教えてくれます。プログラミングでは、このように結果を数字で受け取る形式がよく使われます。

なぜ不等号ではなくこの命令を使うのかというと、結果が「前か、後ろか、あるいは全く同じか」を一発で数値として取得できるため、より複雑な条件分岐を作るときに便利だからです。パソコンに詳しくない方には少し難しく感じるかもしれませんが、判定結果のルールさえ覚えてしまえば大丈夫です。以下のコードで動きを確認してみましょう。


' 二つの日付を比較します
Dim t1 As New Date(2026, 3, 28)
Dim t2 As New Date(2026, 4, 1)

Dim kekka As Integer = DateTime.Compare(t1, t2)

' 結果を判定します
If kekka < 0 Then
    Console.WriteLine("t1はt2より前の日付です。")
ElseIf kekka = 0 Then
    Console.WriteLine("二つの日付は同じです。")
Else
    Console.WriteLine("t1はt2より後の日付です。")
End If

実行結果は以下のようになります。


t1はt2より前の日付です。

結果がマイナス(-1)なら左側が過去、プラス(1)なら左側が未来、ゼロ(0)なら同じという意味になります。少しパズルのようですが、慣れると非常に強力な武器になります。

4. 日付の引き算!Subtractで差を求める

4. 日付の引き算!Subtractで差を求める
4. 日付の引き算!Subtractで差を求める

「期限まであと何日?」という計算をしたいときに使うのが、Subtract(サブトラクト)という命令です。これは英語で「差し引く」という意味があります。日付同士を引き算すると、その結果は単なる日付ではなく、「時間の長さ(期間)」という特別なデータになります。

VB.NETでは、この期間を表すデータのことをTimeSpan(タイムスパン)型と呼びます。単なる数字の引き算とは違い、「何日間あるか」だけでなく「何時間あるか」といった細かい情報まで取り出すことができます。プログラミング未経験の方でも、以下の例を見れば使い方はすぐに分かりますよ。


' イベント当日と今日の日付を用意
Dim eventDay As New Date(2026, 10, 10)
Dim kyo As Date = Date.Today

' 引き算をして期間(差)を求めます
Dim sa As TimeSpan = eventDay.Subtract(kyo)

' 差を表示します(TotalDaysで合計の日数を取得)
Console.WriteLine("イベントまであと " & sa.TotalDays & " 日です。")

実行結果は以下のようになります。


イベントまであと 196 日です。

sa.TotalDaysと書くことで、期間の中から「日数」だけを抜き出しています。これを使えば、カウントダウンタイマーなどの面白いアプリが作れるようになりますね。

5. TimeSpanを使ってより詳細な差を知る

5. TimeSpanを使ってより詳細な差を知る
5. TimeSpanを使ってより詳細な差を知る

先ほどの引き算で出てきたTimeSpan型は、とても多機能です。日数だけでなく、時間や分、秒の単位でも差を教えてくれます。例えば、深夜のメンテナンス終了まで「あと何分か」を知りたい場合などに役立ちます。パソコンの中では、日付と時間は密接に関わっているため、このように細かく計算できるのです。

プログラミングでは、一つの計算から色々な情報が引き出せることがよくあります。以下のサンプルコードで、時間の差をより詳しく表示する方法を見てみましょう。


' 現在時刻と目標時刻の差
Dim goalTime As New Date(2026, 3, 28, 23, 59, 59)
Dim genzai As Date = Date.Now

' 引き算をします
Dim jikanSa As TimeSpan = goalTime.Subtract(genzai)

Console.WriteLine("残り時間:")
Console.WriteLine(jikanSa.Hours & "時間")
Console.WriteLine(jikanSa.Minutes & "分")
Console.WriteLine(jikanSa.Seconds & "秒")

実行結果は以下のようになります。


残り時間:
4時間
6分
35秒

Date.Nowは、日付だけでなく今の時刻(秒単位)まで取得する命令です。それらをSubtractで引き算することで、まるでストップウォッチのような細かい差を計算できるようになります。初心者のうちは、このHours(時)やMinutes(分)といった単語を組み合わせて使う練習をしてみましょう。

6. 比較演算子のまとめと使い分けのコツ

6. 比較演算子のまとめと使い分けのコツ
6. 比較演算子のまとめと使い分けのコツ

VB.NETには日付を比べる方法がいくつかあるため、どれを使えばいいか迷ってしまうかもしれません。基本的には、単純な「もし~より後なら」という条件分岐には不等号(< や >)を使い、「日付の差を数値として保存したい」場合にはCompareメソッドを使うのが一般的です。

また、注意点として「日付のみ(Date)」と「時刻を含む日付(DateTime)」を混ぜて比較するときは気をつけましょう。時刻が含まれていると、同じ日付でも時間が少しでも違えば「一致しない」と判定されてしまいます。正確な比較を行うためには、データの形を揃えることが重要です。これはプログラミング全般に言える大切な習慣ですね。

7. 期間の計算で間違えやすいポイント

7. 期間の計算で間違えやすいポイント
7. 期間の計算で間違えやすいポイント

日付の引き算(Subtract)で初心者が間違いやすいのは、過去と未来を逆にして引き算してしまうことです。例えば、昨日から今日を引くと、結果はマイナスの期間になってしまいます。画面に表示したときに「あと -5日」と出ると少し格好悪いですよね。

そんなときは、常に「未来の日付.Subtract(過去の日付)」の順番で書くように意識しましょう。もし結果がマイナスになってしまった場合は、絶対値を求めるMath.Absという命令を組み合わせて修正することもできますが、まずは引き算の順番を正しく覚えるのが先決です。カレンダーを右から左へめくるように計算するのがコツですよ。

8. 日付比較ができると広がるプログラミングの世界

8. 日付比較ができると広がるプログラミングの世界
8. 日付比較ができると広がるプログラミングの世界

ここまで、日付を比べたり引き算したりする方法を解説してきました。いかがでしたでしょうか?「Compare」や「Subtract」という言葉は難しく聞こえますが、やっていることはとてもシンプルです。日付を自由に操れるようになると、業務効率化ツールや個人的な予定管理アプリなど、作れるものの幅が一気に広がります。

パソコン初心者の方も、まずは今回紹介したサンプルコードをコピーして、自分で日付の数字を書き換えて実行してみてください。自分で数字を変えて、結果が変わるのを見るのが一番の勉強になります。VB.NETは初心者にとても優しい言語ですので、ぜひ焦らず一歩ずつ、日付操作のマスターを目指していきましょう!

カテゴリの一覧へ
新着記事
New1
VB.NET
VB.NETで日付と時間を比較・計算する方法!CompareとSubtractを完全解説
New2
VB.NET
VB.NETの構文ルールまとめ!インデント・改行・予約語など初心者が最初に覚えるべきポイント
New3
ASP.NET
ASP.NET MVCアプリをデバッグする方法を完全解説!初心者でも安心して原因を見つけられる入門ガイド
New4
ASP.NET
ASP.NET Coreのデフォルトセキュリティ機能を完全解説!初心者でもわかる安全なWebアプリの作り方
人気記事
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で日付を加算・減算する方法を完全ガイド!AddDaysやAddMonthsの使い方
No.4
Java&Spring記事人気No4
ASP.NET
ASP.NETとは?初心者向けにできることと特徴をやさしく解説
No.5
Java&Spring記事人気No5
VB.NET
VB.NETのFunctionとSubの違いをわかりやすく解説!初心者向けガイド
No.6
Java&Spring記事人気No6
VB.NET
VB.NETで日付を文字列に変換!ToStringやFormatの使い方を徹底解説
No.7
Java&Spring記事人気No7
VB.NET
VB.NETで戻り値を返す関数の書き方を初心者向けに解説
No.8
Java&Spring記事人気No8
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド