Dateの変数に対して、指定した日数+時間を加算したり、減算したりしたい場合は、
TimeSpan構造体が便利です。
以下にTimeSpan構造体を使った、C#、Visual Basic(VB)のサンプルコードを記します。
コンソールアプリケーションとして作成し、動作確認をしました。
動作内容は以下の通りです。
C#でTimeSpanを利用したサンプルコードになります。
using System;
namespace TimeSpanCS
{
class Program
{
static void Main(string[] args)
{
// 指定した日付から指定した日+時間を減算する
DateTime dt = new DateTime(2019, 12, 1, 0, 0, 0); // 2019/12/01 00:00:00
TimeSpan ts1 = new TimeSpan(25, 1, 2); // 25時間2分3秒
Console.WriteLine(dt.ToString() + " - " + ts1.ToString() + " = " + (dt-ts1));
// TimeSpanに経過日数を格納する
DateTime sdt = new DateTime(2019, 12, 1); // 2019/12/01
DateTime edt = new DateTime(2019, 11, 10); // 2019/11/10
TimeSpan ts2 = sdt - edt;
Console.WriteLine(edt.ToString() + " - " + sdt.ToString() + " = " + ts2.Days);
}
}
}
Visual Basic(VB)でTimeSpanを利用したサンプルコードになります。
Imports System
Module Program
Sub Main(args As String())
'指定した日付から指定した日+時間を減算する
Dim dt As DateTime = New DateTime(2019, 12, 1, 0, 0, 0) '2019/12/01 00: 00:00
Dim ts1 As TimeSpan = New TimeSpan(25, 1, 2) '25時間2分3秒
Console.WriteLine(dt.ToString() & " - " & ts1.ToString() & " = " & (dt - ts1))
'TimeSpanに経過日数を格納する
Dim sdt As DateTime = New DateTime(2019, 12, 1) '2019/12/01
Dim edt As DateTime = New DateTime(2019, 11, 10) '2019/11/10
Dim ts2 As TimeSpan = sdt - edt
Console.WriteLine(edt.ToString() & " - " & sdt.ToString() & " = " & ts2.Days)
End Sub
End Module
上記のC#, VBのサンプルコードの実行結果になります。
2019/12/01 0:00:00 - 1.01:01:02 = 2019/11/29 22:58:58 2019/11/10 0:00:00 - 2019/12/01 0:00:00 = 21
以上、C#, Visual Basic(VB)でTimeSpan構造体を使ったサンプルコードの紹介でした。