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

VB.NETでDateOnlyとTimeOnlyを使いこなす!日付と時間の専門家になろう

VB.NETでDateOnlyとTimeOnlyを使う方法(.NET 6以降)
VB.NETでDateOnlyとTimeOnlyを使う方法(.NET 6以降)

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

生徒

「先生、VB.NETで『日付だけ』とか『時間だけ』を扱いたいとき、今までは全部一緒になっていて少し不便でした。何か良い方法はありますか?」

先生

「実は .NET 6 というバージョンから、DateOnly(デイト・オンリー)とTimeOnly(タイム・オンリー)という専用の道具が登場したんですよ。」

生徒

「専用の道具ですか!それを使うと、どう便利になるんですか?」

先生

「誕生日なら日付だけ、目覚まし時計なら時間だけ、といった具合に、無駄なくスッキリとプログラムが書けるようになります。さっそく使い方をマスターしましょう!」

1. DateOnlyとTimeOnlyとは?

1. DateOnlyとTimeOnlyとは?
1. DateOnlyとTimeOnlyとは?

これまでのVB.NETでは、日付と時間を扱うときは DateTime(デートタイム)という道具を使っていました。これは「2026年3月28日の午後7時」のように、日付と時間の両方をセットで持っている便利なものですが、時には「日付だけでいいのに……」と思うこともありました。例えば、お誕生日に「何時何分生まれ」という情報まで毎回ついてきたら少しややこしいですよね。

そこで登場したのが、DateOnlyTimeOnly です。名前の通り、DateOnlyは「日付だけ」を専門に扱い、TimeOnlyは「時間だけ」を専門に扱います。これらを使うことで、プログラムがより読みやすく、間違いの少ないものになります。パソコン初心者の方でも、「日付の箱」と「時間の箱」を別々に用意する、とイメージすれば分かりやすいでしょう。

2. DateOnlyで「日付だけ」を作成して表示する

2. DateOnlyで「日付だけ」を作成して表示する
2. DateOnlyで「日付だけ」を作成して表示する

まずは、DateOnlyを使って特定の日付を作ってみましょう。作り方は非常にシンプルです。年、月、日の順番に数字を指定するだけです。これまでのように時刻の「00:00:00」を気にする必要は一切ありません。


' 2026年10月10日の日付を作成します
Dim tanjobi As New DateOnly(2026, 10, 10)

' 画面に表示してみましょう
Console.WriteLine("記念日は: " & tanjobi.ToString())

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


記念日は: 2026/10/10

ここで使っている New DateOnly というのは、「新しい日付の箱を一つ作る」という命令です。余計な時刻の情報が含まれていないため、日付同士を比較したり、カレンダーを表示させたりするときに非常に扱いやすくなります。

3. TimeOnlyで「時間だけ」を管理する

3. TimeOnlyで「時間だけ」を管理する
3. TimeOnlyで「時間だけ」を管理する

次は TimeOnly の使い方です。これは「毎日午前7時にお知らせを出す」といった、日付に関係なく特定の時間を扱いたいときに最適です。時、分の順番、あるいは秒まで細かく指定することもできます。プログラミング未経験の方にとっては、ストップウォッチやキッチンタイマーの設定をする感覚に近いかもしれません。


' 午後2時30分の時間を作成します
Dim oyatsuTime As New TimeOnly(14, 30)

' 画面に表示します
Console.WriteLine("おやつの時間は " & oyatsuTime.ToString("HH時mm分") & " です")

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


おやつの時間は 14時30分 です

ToString の中で使っている HH時mm分 というのは、「時と分を好きな形式で表示してね」という指示(フォーマット)です。DateOnlyと同じように、日付の情報を持っていないため、純粋に「時間」としての処理に集中できます。

4. 今日の日付や今の時間を取得するコツ

4. 今日の日付や今の時間を取得するコツ
4. 今日の日付や今の時間を取得するコツ

今この瞬間の日付や時間を取得したい場合、これまでの DateTime.Now から変換するというステップが必要になります。少しだけ手順が増えますが、慣れてしまえば簡単です。パソコン内部では現在も DateTime が基準になっているため、そこから必要な部分だけを抜き出すという作業を行います。


' 今の全情報を取得
Dim genzai As DateTime = DateTime.Now

' 日付だけを取り出す
Dim kyo As DateOnly = DateOnly.FromDateTime(genzai)

' 時間だけを取り出す
Dim ima As TimeOnly = TimeOnly.FromDateTime(genzai)

Console.WriteLine("今日は: " & kyo.ToString())
Console.WriteLine("今は: " & ima.ToString())

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


今日は: 2026/03/28
今は: 19:56:29

FromDateTime(フロム・デートタイム)という命令は、「DateTime型のデータから、自分専用の形を作ってね」という意味です。このように、既存の大きなデータから必要な部分だけを丁寧に切り分けることができます。

5. 日付の計算(〇日後、〇ヶ月前)を簡単に行う

5. 日付の計算(〇日後、〇ヶ月前)を簡単に行う
5. 日付の計算(〇日後、〇ヶ月前)を簡単に行う

DateOnlyの便利なところは、日付の計算がとても楽な点です。「今日から10日後は何日かな?」という計算をしたいとき、専用の命令を使うだけでカレンダーの複雑な計算をパソコンが自動でやってくれます。2月が28日だったり29日だったりしても、私たちは一切気にする必要がありません。


Dim baseDay As New DateOnly(2026, 3, 28)

' 5日後を計算
Dim goNichiGo As DateOnly = baseDay.AddDays(5)

' 2ヶ月前を計算
Dim niKagetsuMae As DateOnly = baseDay.AddMonths(-2)

Console.WriteLine("5日後は: " & goNichiGo.ToString())
Console.WriteLine("2ヶ月前は: " & niKagetsuMae.ToString())

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


5日後は: 2026/04/02
2ヶ月前は: 2026/01/28

AddDays(アド・デイズ)は日数を足す、AddMonths(アド・マンス)は月数を足すという意味です。マイナスの数字を入れれば、過去に戻ることもできます。カレンダーをめくる作業をプログラムに任せられるのは非常に強力なメリットですね。

6. 時間の前後関係を比べる方法

6. 時間の前後関係を比べる方法
6. 時間の前後関係を比べる方法

TimeOnlyを使えば、二つの時間を比べるのも簡単です。「今の時間は、おやつの時間を過ぎたかな?」という判定をしたいときに使います。数字を比べるのと同じように、不等号(> や <)を使って直感的に書くことができます。プログラミング未経験の方でも、算数の授業を思い出すだけで書けてしまいます。


Dim ima As New TimeOnly(15, 0)
Dim kigen As New TimeOnly(17, 0)

' 不等号を使って比較します
If ima < kigen Then
    Console.WriteLine("まだ時間内です。頑張りましょう!")
Else
    Console.WriteLine("もうおしまいです。お疲れ様でした。")
End If

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


まだ時間内です。頑張りましょう!

このように、時間の前後を数値のように扱えるため、予約システムや出退勤管理システムなどを作る際にとても役立ちます。日付のことを考えなくて良いので、ロジック(プログラムの論理)が非常にスッキリしますね。

7. 初心者が知っておきたい注意点

7. 初心者が知っておきたい注意点
7. 初心者が知っておきたい注意点

非常に便利な DateOnly と TimeOnly ですが、いくつか注意点があります。まず、これらは .NET 6 以降という新しい環境でしか使えません。とても古いバージョンのVB.NETを使っている場合は、エラーになってしまいます。また、データベースという「情報を保存する大きな棚」に保存する際、古い棚だと「日付と時間をセットにしたものしか入れられません!」と断られることもあります。

しかし、最新のプログラミング環境ではこれらを活用するのが当たり前になってきています。もし古い環境で使いたい場合は、保存する直前に DateTime型 に戻すといった工夫をすることもありますが、まずは「日付だけ」「時間だけ」を個別に扱えるという便利さを存分に味わってみてください。プログラムの整理整頓がとても楽しくなりますよ。

8. 日付と時間をマスターしてプログラムを美しく

8. 日付と時間をマスターしてプログラムを美しく
8. 日付と時間をマスターしてプログラムを美しく

ここまで、DateOnlyとTimeOnlyの使い方を詳しく解説してきました。いかがでしたでしょうか?「日付だけ」「時間だけ」を扱うという考え方は、私たちの日常生活と同じなので、意外と馴染みやすかったのではないでしょうか。VB.NETは初心者の方に優しい言語ですが、こうした新しい機能を使いこなすことで、より「プロっぽい」美しいコードが書けるようになります。

パソコンを触ったことがなくても、今回紹介したコードを少しずつ真似して書いてみれば、自分だけの便利なツールが作れるようになります。例えば、自分の次のお誕生日までの日数を計算したり、お昼休みの残り時間を表示したり。日付と時間の専門家として、色々なアイデアを形にしてみてください。焦らず一歩ずつ、プログラミングの世界を楽しんでいきましょう!

カテゴリの一覧へ
新着記事
New1
VB.NET
VB.NETでDateOnlyとTimeOnlyを使いこなす!日付と時間の専門家になろう
New2
VB.NET
VB.NETの変数とは?初心者向けに定義方法とよく使うデータ型を解説
New3
ASP.NET
ASP.NET MVCでモデルを定義してデータを扱う方法を初心者向けに解説
New4
ASP.NET
ASP.NETのマイグレーションを使ったスキーマ管理方法を完全解説!初心者でも安心
人気記事
No.1
Java&Spring記事人気No1
ASP.NET
ASP.NETとは?初心者向けにできることと特徴をやさしく解説
No.2
Java&Spring記事人気No2
ASP.NET
ASP.NET WebFormsとは?基本概念と仕組みを初心者向けにやさしく解説
No.3
Java&Spring記事人気No3
VB.NET
VB.NETで日付を文字列に変換!ToStringやFormatの使い方を徹底解説
No.4
Java&Spring記事人気No4
VB.NET
VB.NETプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.5
Java&Spring記事人気No5
VB.NET
VB.NETで日付と時間を比較・計算する方法!CompareとSubtractを完全解説
No.6
Java&Spring記事人気No6
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.7
Java&Spring記事人気No7
VB.NET
VB.NETで日付を加算・減算する方法を完全ガイド!AddDaysやAddMonthsの使い方
No.8
Java&Spring記事人気No8
VB.NET
VB.NETのインストール方法まとめ!Visual Studioを使った環境構築手順