ここではVB.NETでDateTimeオブジェクトを使った日付の操作の方法を紹介します。

ローカル日時を取得する

現在の日時を取得する

Dim dtNow As DateTime = DateTime.Now
Console.WriteLine(dtNow)


ローカル日時から年・月・日を取得する

' 年を取得
Dim intYear As Integer = DateTime.Now.Year
Console.WriteLine(intYear)

' 月を取得
Dim intMonth As Integer = DateTime.Now.Month
Console.WriteLine(intMonth)

' 日を取得
Dim intDay As Integer = DateTime.Now.Day
Console.WriteLine(intDay)


ローカル日時から時・分・秒・ミリ秒を取得する

' 時を取得
Dim intHour As Integer = DateTime.Now.Hour
Console.WriteLine(intHour)

' 分を取得
Dim intMinute As Integer = DateTime.Now.Minute
Console.WriteLine(intMinute)

' 秒を取得
Dim intSecond As Integer = DateTime.Now.Second
Console.WriteLine(intSecond)

' ミリ秒を取得
Dim intMillisecond As Integer = DateTime.Now.Millisecond
Console.WriteLine(intMillisecond)


日時の情報を取得する

文字列が日付型に変換できるか確認する(DateTime.Parseメソッド)

Dim strDate As String = "2021/1/32"
Dim dt As DateTime

' DateTime型に変換できるか確認する
If DateTime.TryParse(strDate, dt) Then
    Console.WriteLine("日付に変換できます。" & strDate)
Else
    Console.WriteLine("日付に変換できません。" & strDate)
End If
' 実行結果:日付に変換できません。2021/1/32

Parseメソッドは、文字列をDateTime型に変換するときに使います。DateTime型に変換できない場合はFalseを返します。


指定した年月の日数を取得する(DateTime.DaysInMonthメソッド)

Dim days As Integer
days = DateTime.DaysInMonth(2020, 2)
Console.WriteLine("2020年2月の日数は" & days.ToString() & "日です")
' 実行結果:2020年2月の日数は29日です

DaysInMonthメソッドは、ある年の月の日数を求めます。


指定した2つの日時の差を求める(DateTime.Subtractメソッド)

Dim days1 As New System.DateTime(2021, 3, 12, 0, 0, 0)
Dim days2 As New System.DateTime(2021, 3, 14, 12, 15, 30)
Dim dt As TimeSpan

' 日時days1と日時days2の時間差を求める
dt = days1.Subtract(days2)
Console.WriteLine(dt) ' 実行結果:-2.12:15:30


日時を加減算する

指定した年数を加算または減算する(DateTime.AddMonthsメソッド)

Dim dtDate As DateTime = DateTime.Parse("2021/03/12")

' 1年加算する
Dim dt1 = dtDate.AddYears(1)
Console.WriteLine(dt1.ToString("yyyy/MM/dd")) ' 実行結果:2022/03/12

' 1年減算する
Dim dt2 = dtDate.AddYears(-1)
Console.WriteLine(dt2.ToString("yyyy/MM/dd")) ' 実行結果:2020/03/12


指定した月数を加算または減算する(DateTime.AddYearsメソッド)

Dim dtDate As DateTime = DateTime.Parse("2021/03/12")

' 3ヵ月加算する
Dim dt1 = dtDate.AddMonths(3)
Console.WriteLine(dt1.ToString("yyyy/MM/dd")) ' 実行結果:2021/06/12

' 3ヵ月減算する
Dim dt2 = dtDate.AddMonths(-3)
Console.WriteLine(dt2.ToString("yyyy/MM/dd")) ' 実行結果:2020/12/12


指定した日数を加算または減算する(DateTime.AddDaysメソッド)

Dim dtDate As DateTime = DateTime.Parse("2021/03/12")

' 10日加算する
Dim dt1 = dtDate.AddDays(10)
Console.WriteLine(dt1.ToString("yyyy/MM/dd")) ' 実行結果:2021/03/22

' 10日減算する
Dim dt2 = dtDate.AddDays(-10)
Console.WriteLine(dt2.ToString("yyyy/MM/dd")) ' 実行結果:2021/03/02


指定した時間数を加算または減算する(DateTime.AddHoursメソッド)

Dim dtDate As DateTime = DateTime.Parse("2021/03/12 22:30:40")

' 1時間加算する
Dim dt1 = dtDate.AddHours(1)
Console.WriteLine(dt1.ToString("yyyy/MM/dd HH:mm:ss"))
' 実行結果:2021/03/12 23:30:40

' 1時間減算する
Dim dt2 = dtDate.AddHours(-1)
Console.WriteLine(dt2.ToString("yyyy/MM/dd HH:mm:ss"))
' 実行結果:2021/03/12 21:30:40


指定した分数を加算または減算する(DateTime.AddMinutesメソッド)

Dim dtDate As DateTime = DateTime.Parse("2021/03/12 22:30:40")

' 3分加算する
Dim dt1 = dtDate.AddMinutes(3)
Console.WriteLine(dt1.ToString("yyyy/MM/dd HH:mm:ss"))
' 実行結果:2021/03/12 23:30:43

' 3分減算する
Dim dt2 = dtDate.AddMinutes(-3)
Console.WriteLine(dt2.ToString("yyyy/MM/dd HH:mm:ss"))
' 実行結果:2021/03/12 21:30:37


指定した秒数を加算または減算する(DateTime.AddSecondsメソッド)

Dim dtDate As DateTime = DateTime.Parse("2021/03/12 22:30:40")

' 10秒加算する
Dim dt1 = dtDate.AddSeconds(10)
Console.WriteLine(dt1.ToString("yyyy/MM/dd HH:mm:ss"))
' 実行結果:2021/03/12 22:30:50

' 10秒減算する
Dim dt2 = dtDate.AddSeconds(-10)
Console.WriteLine(dt2.ToString("yyyy/MM/dd HH:mm:ss"))
' 実行結果:2021/03/12 22:30:30


以上、VB.NETでDateTimeオブジェクトを使った日付の操作の方法について解説しました。