VB.NETのDateTime型の基本と日付・時刻の扱い方を徹底解説!初心者でも理解できるサンプル付き
生徒
「VB.NETで日付や時刻を扱いたいんですけど、どうやって書けばいいんですか?」
先生
「VB.NETではDateTime型を使うと、日付や時間を簡単に扱うことができるんだよ。」
生徒
「数字や文字列の変数はなんとなくわかりますけど、日付はどう扱えばいいんですか?」
先生
「それじゃあ、基本から順番に学んでいこう!」
1. DateTime型とは?
DateTime型は、VB.NETで日付(年・月・日)や時刻(時・分・秒)をまとめて扱うための、とても便利なデータ型です。たとえば「2025年10月4日 15:30:00」のような情報をひとつの変数で持てるため、日付処理がぐっと分かりやすくなります。
もし日付を文字列("2025/10/04" など)として扱うと、計算や比較をするたびに変換が必要になり、初心者には少し難しく感じることがあります。しかし、DateTime型なら日付の取得や計算、フォーマット変更などを簡単な書き方で行えるので、プログラムのミスも減らせます。
例えば、次のように書くだけで「今日の日付」を変数に入れられます。これだけで、VB.NETが自動的に現在の日時を判断してくれます。
Dim today As DateTime = DateTime.Now
Console.WriteLine("現在の日時: " & today)
このように、DateTime型は「日付や時間を安全に、正確に扱える仕組み」を提供してくれる、VB.NETの基礎として欠かせない重要なデータ型です。まずは“今日の日時を取得する”といった簡単な操作から触れてみると、仕組みが自然と理解しやすくなります。
2. DateTime型の基本的な使い方
DateTime型を使ううえで最初に覚えておきたいのは、「現在の日時を取得する」「日付だけ・時刻だけを取り出す」といった基本操作です。これらを理解しておくと、後で日付計算やフォーマット変更を学ぶ際にもスムーズに進められます。
まずは、DateTime型の変数に現在の日時を代入して表示してみましょう。たったこれだけのコードで、PCが持っている現在時刻をそのまま取得できます。
Dim today As DateTime = DateTime.Now
Console.WriteLine("現在日時: " & today)
2025/10/04 15:30:00
DateTime.Nowは「年・月・日・時・分・秒」をすべて含む完全な日時を返します。もし日付だけ欲しい場合や、逆に時刻だけを知りたい場合は、次のように簡単に取り出せます。
Console.WriteLine("日付のみ: " & today.Date)
Console.WriteLine("時刻のみ: " & today.TimeOfDay)
このように、DateTime型は必要な情報を柔軟に取り出せるため、業務用アプリや日付を扱うツールでも欠かせない基礎機能になっています。特に、「まず現在の日時を取得する」という操作は多くのプログラムで登場するので、最初にしっかり押さえておくと後の理解がぐっと楽になります。
3. 特定の日付や時刻を作成する
DateTime型を使うと、好きな日付や時刻を自分で指定して変数に入れることができます。誕生日やイベントの日付など、決まった日時を扱いたい場合に非常によく使う方法です。指定の仕方もシンプルで、年・月・日を順番に渡すだけで1つのDateTime値としてまとめて扱えるようになります。
まずは、誕生日のような「日付だけ」を指定してみましょう。次のコードのように、新しいDateTimeを作成すればその日付が変数にセットされます。
Dim myBirthday As DateTime = New DateTime(1995, 12, 25)
Console.WriteLine("誕生日: " & myBirthday)
誕生日: 1995/12/25 0:00:00
このように、時間を指定していない場合は「0時0分0秒」が自動で設定されます。時刻まで含めた正確な日時を設定したいときは、年・月・日だけでなく「時・分・秒」まで指定できます。
Dim eventTime As DateTime = New DateTime(2025, 10, 4, 14, 30, 0)
Console.WriteLine("イベント開始: " & eventTime)
イベント開始: 2025/10/04 14:30:00
この機能を使えば「開始時刻」「締め切り日」「リマインドするタイミング」などを正確に管理できるようになり、アプリ開発でも非常に役立ちます。特にスケジュール管理アプリや予約システムのように“日時を使い分ける”場面では欠かせない基本技術です。
4. 日付や時刻の計算
DateTime型を使うと、日付や時刻の計算がとても簡単です。
4-1. 日付を足す・引く
例えば「今日から7日後」や「1時間前」を求めるには、AddDaysやAddHoursを使います。
Dim today As DateTime = DateTime.Now
Dim nextWeek As DateTime = today.AddDays(7)
Dim oneHourAgo As DateTime = today.AddHours(-1)
Console.WriteLine("今日: " & today)
Console.WriteLine("来週: " & nextWeek)
Console.WriteLine("1時間前: " & oneHourAgo)
4-2. 日付の差を求める
二つの日付の差を求めるには、引き算を使います。結果はTimeSpan型(時間の長さを表す型)になります。
Dim startDate As DateTime = New DateTime(2025, 1, 1)
Dim endDate As DateTime = New DateTime(2025, 12, 31)
Dim diff As TimeSpan = endDate - startDate
Console.WriteLine("日数差: " & diff.Days & "日")
日数差: 364日
5. 日付と時刻のフォーマット
DateTime型は、そのまま表示するとPCの設定に応じた形式で出力されますが、ToStringメソッドを使うと自由な形に整形できます。
Dim now As DateTime = DateTime.Now
Console.WriteLine(now.ToString("yyyy/MM/dd"))
Console.WriteLine(now.ToString("HH:mm:ss"))
Console.WriteLine(now.ToString("yyyy年MM月dd日 HH時mm分"))
2025/10/04
15:30:00
2025年10月04日 15時30分
yyyyは西暦、MMは月、ddは日、HHは24時間表記の時、mmは分、ssは秒を意味します。
6. よく使うDateTimeプロパティ
DateTime型には便利なプロパティがたくさんあります。よく使うものをいくつか紹介します。
Now… 現在の日時Today… 今日の日付(時刻は0:00:00)Year… 年を取得Month… 月を取得Day… 日を取得DayOfWeek… 曜日を取得Hour… 時を取得Minute… 分を取得Second… 秒を取得
Dim now As DateTime = DateTime.Now
Console.WriteLine("年: " & now.Year)
Console.WriteLine("月: " & now.Month)
Console.WriteLine("日: " & now.Day)
Console.WriteLine("曜日: " & now.DayOfWeek)
7. DateTime型を使うときの注意点
最後に、初心者がDateTime型を使うときに注意しておきたいポイントを紹介します。
- 文字列として入力された日付は、そのままでは使えない場合があります。
DateTime.Parseを使って変換すると安全です。 - 国や地域によって日付の書き方(フォーマット)が異なるため、
ToStringで指定しておくと確実です。 - 日付の計算では閏年(うるうどし)を自動で考慮してくれるので安心ですが、開始日と終了日を間違えないようにしましょう。
まとめ
VB.NETのDateTime型は、初心者がつまずきやすいデータ型のひとつですが、一度基本を理解してしまえば日付や時刻の管理がとても直感的にできる便利な機能です。年月日と時刻という二つの情報をひとつの変数で扱えるため、計算処理や表示処理をまとめて行いやすく、アプリケーション全体の流れも整理されていきます。また、日付の差分を求めたり、特定の日付を計算したりといった操作がスムーズにできることから、業務システムや予約管理、ログ管理など、実務のさまざまな場面で役立つ基礎でもあります。
DateTime型が持つプロパティやメソッドを理解していくと、「今日の日付だけが欲しい」「三日後の日付を計算したい」「フォーマットを整えて表示したい」といった要望に対して、シンプルで読みやすいコードを書けるようになります。特にAddDaysやAddHoursなどの日付計算メソッドは、複雑な処理をしなくても直感的に使えるため、はじめのうちから積極的に触れておきたいところです。
また、日付や時刻を文字列として扱う場合は、地域によるフォーマットの違いを意識する必要がありますが、DateTime型に変換してしまえば統一された形式で扱えるようになるため、データの信頼性も高まります。フォーマットを指定できるToStringメソッドは、表示時の整え方として欠かせない機能であり、画面表示を行うアプリケーションでは必ずと言っていいほど登場します。
初心者が特に意識しておきたいのは、「日付は文字列ではなくDateTime型で管理する」ことです。これを理解しておくと、思い違いや計算ミスを避けられるだけでなく、非常に保守しやすいコードを書けるようになります。複雑に感じられる日付処理でも、DateTime型を正しく使えば驚くほどすっきりまとめられるので、積極的に活用していきましょう。
追加のサンプルプログラム
'イベントの日付管理と残り日数を計算するサンプル
Dim eventDate As DateTime = New DateTime(2026, 4, 1, 10, 0, 0)
Dim now As DateTime = DateTime.Now
Console.WriteLine("イベント開始日時: " & eventDate.ToString("yyyy年MM月dd日 HH時mm分"))
Dim remaining As TimeSpan = eventDate - now
Console.WriteLine("残り日数: " & remaining.Days & "日")
Console.WriteLine("残り時間: " & remaining.Hours & "時間")
Console.WriteLine("残り合計時間: " & remaining.TotalHours & "時間")
'開始日の曜日も取得できる
Console.WriteLine("イベントの曜日: " & eventDate.DayOfWeek)
このサンプルでは、未来の日付を設定してイベント開始までの残り時間を計算しています。実際のアプリケーションでも、このような「残り日数表示」「イベント管理」「締切カウントダウン」といった処理はよく使われます。DateTime型があれば、こうした時間管理のロジックを簡単に書けるため、複雑なアプリケーションでも整ったコード構造を維持できます。 特に、TimeSpan型との組み合わせによって「どれだけ時間が経ったか」「残り時間がどれくらいか」を明確に算出できるのは非常に便利です。年・月・日・曜日・時・分・秒といった情報はDateTimeプロパティから取り出せるため、日時に関する処理はこれらを組み合わせるだけで十分活用できます。 また、フォーマット指定を行うことで、ユーザーにとって読みやすい形に整形できる点も実務では欠かせません。「2026/04/01 10:00:00」という表示でも分かりますが、「2026年04月01日 10時00分」と書くことで、情報がぐっと見やすくなります。こうした細かな工夫がプログラム全体の品質を左右し、ユーザーにとっても使いやすい設計につながっていきます。 日付や時間の操作は、一度きちんと理解すればどの分野でも応用がききます。アプリケーションの信頼性を高めながら、処理の流れを整理しやすくなるため、VB.NETを学ぶ上で欠かせない要素だと言えるでしょう。
生徒
「DateTime型って難しそうだと思っていましたが、日付や時間をまとめて扱えるから便利ですね。」
先生
「そうなんだよ。慣れてくると、日付を計算したりフォーマットしたりするのがとても簡単に感じられるはずだよ。」
生徒
「AddDaysやAddHoursなどのメソッドが直感的で使いやすいと感じました。数字をそのまま足すより確実ですね!」
先生
「その通り。DateTime型を使えば誤差のない計算ができるし、元の日付を壊す心配もないから安全なんだ。」
生徒
「ToStringで自由に表示形式を変えられるのも便利です。画面に出すときに使いやすいですね!」
先生
「フォーマット指定は画面開発でもレポート作成でもよく使われるから覚えておくと役に立つよ。」
生徒
「今日学んだ内容を使って、日付を扱うアプリを作ってみたいです!」
先生
「とても良い考えだね。DateTime型は奥が深いけれど、使いこなせれば大きな武器になるよ。」