VB.NET 日時の差分を求めるサンプル

VB.NETの日時の差分を求めるサンプルです。

目次

サンプル 日の差分を求める
  時間・分・秒の差分を求める
  月の差分を求める

日の差分を求める

Public Structure TimeSpan
  Public ReadOnly Property Days As Integer
  Public ReadOnly Property TotalDays As Double

日の差分を求めるサンプルです。

Module Module1
	Sub Main()
		' 指定日時をセット 2020/1/2 10:00:00
		Dim dt1 As New DateTime(2020, 1, 2, 10, 0, 0)

		' 指定日時をセット 2019/12/31
		Dim dt2 As New DateTime(2019, 12, 31, 0, 0, 0)

		' 引き算
		Dim ts1 As New TimeSpan
		ts1 = dt1 - dt2

		Console.WriteLine(ts1.Days) '2
		Console.WriteLine(ts1.TotalDays) '2.41666666666667

		' 日時を文字列でセット
		Dim dt3 As New DateTime
		dt3 = Convert.ToDateTime("2020/01/02 10:00:00")

		Dim dt4 As New DateTime
		dt4 = Convert.ToDateTime("2019/12/31 00:00:00")

		' 引き算
		Dim ts2 As New TimeSpan
		ts2 = dt3 - dt4

		Console.WriteLine(ts2.Days) '2
		Console.WriteLine(ts2.TotalDays) '2.41666666666667
	End Sub
End Module

4,7行目は、指定日時に数値を指定しています。
18,21行目は、日時の文字列をDateTime型に変換しています。

引き算の結果の日の差分はTimeSpanのDaysプロパティで取得します。
Daysは、時分秒を含まず計算します。
TotalDaysは、時分秒を含んで計算します。

 

時間・分・秒の差分を求める

Public Structure TimeSpan
  Public ReadOnly Property TotalHours As Double
  Public ReadOnly Property TotalMinutes As Double
  Public ReadOnly Property TotalSeconds As Double

時間・分・秒の差分を求めるサンプルです。

Module Module1
	Sub Main()
		' 指定日時をセット 2020/1/3 10:00:00
		Dim dt1 As New DateTime(2020, 1, 3, 10, 0, 0)

		' 指定日時をセット 2019/1/1 10:00:00
		Dim dt2 As New DateTime(2020, 1, 1, 10, 0, 0)

		' 引き算
		Dim ts1 As New TimeSpan

		ts1 = dt1 - dt2

		Console.WriteLine(ts1.TotalHours) '48 (時間)
		Console.WriteLine(ts1.TotalMinutes) '2880 (分)
		Console.WriteLine(ts1.TotalSeconds) '172800 (秒)

		' 日時を文字列でセット
		Dim dt3 As New DateTime
		dt3 = Convert.ToDateTime("2020/01/03 10:00:00")

		Dim dt4 As New DateTime
		dt4 = Convert.ToDateTime("2020/01/01 10:00:00")

		' 引き算
		Dim ts2 As New TimeSpan
		ts2 = dt3 - dt4

		Console.WriteLine(ts2.TotalHours) '48 (時間)
		Console.WriteLine(ts2.TotalMinutes) '2880 (分)
		Console.WriteLine(ts2.TotalSeconds) '172800 (秒)
	End Sub
End Module

DateTimeのコンストラクタの引数に年月日時分秒を指定して引き算します。
引き算の結果の時間の差分はTimeSpanのTotalHours,TotalMinutes,TotalSecondsプロパティで取得します。

月の差分を求める

月の差分についてはTotalHoursのようなプロパティはないので計算します。

Module Module1
	Sub Main()
		' 指定日時をセット 2019/10/01
		Dim dt1 As New DateTime(2019, 10, 1, 0, 0, 0)

		' 指定日時をセット 2020/01/01
		Dim dt2 As New DateTime(2020, 1, 1, 0, 0, 0)

		' 引き算
		Dim ts1 As Integer

		ts1 = dt2.Month - dt1.Month + (12 * (dt2.Year - dt1.Year))

		Console.WriteLine(ts1) '3

		' 日時を文字列でセット
		Dim dt3 As New DateTime
		dt3 = Convert.ToDateTime("2019/10/01 00:00:00")

		Dim dt4 As New DateTime
		dt4 = Convert.ToDateTime("2020/01/01 00:00:00")

		' 引き算
		Dim ts2 As New Integer

		ts2 = dt4.Month - dt3.Month + (12 * (dt4.Year - dt3.Year))

		Console.WriteLine(ts1) '3
	End Sub
End Module

12行目は、月と年を計算しています。計算式に日は入っていません。

関連の記事

VB.NET 現在日時の取得と表示形式のサンプル
VB.NET 日時を計算するサンプル(加算と減算)

△上に戻る