ここでは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オブジェクトを使った日付の操作の方法について解説しました。