#author("2019-11-24T15:51:19+09:00","","")
#navi(../)
* 時間(日数+時間)を格納することができるTimeSpan構造体 [#m09b3f78]
Dateの変数に対して、指定した日数+時間を加算したり、減算したりしたい場合は、~
TimeSpan構造体が便利です。~

#contents

* 参考サイト [#i1fc6bd5]
-[[[Microsoft|.NET TimeSpan 構造体>https://docs.microsoft.com/ja-jp/dotnet/api/system.timespan?view=netframework-4.8]]

#htmlinsert(windev-top.html)

* TimeSpan構造体を使ったサンプルコード [#ma85d8da]
以下に''TimeSpan''構造体を使った、C#、Visual Basic(VB)のサンプルコードを記します。~
コンソールアプリケーションとして作成し、動作確認をしました。~
動作内容は以下の通りです。
-DateTimeオブジェクトに対し、''TimeSpan''に設定した(日+時間)を引き算し結果を表示します。
-DateTimeオブジェクト同士で引き算をし、差分(日)を''TimeSpan''に格納し結果を表示します。

** C# サンプルコード [#ic367098]
C#でTimeSpanを利用したサンプルコードになります。
#ref(Program.cs)
 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 サンプルコード [#h809b8f4]
Visual Basic(VB)でTimeSpanを利用したサンプルコードになります。
#ref(Program.vb)
 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

** 動作結果 [#ve724027]
上記の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

#ref(01.png)

以上、C#, Visual Basic(VB)でTimeSpan構造体を使ったサンプルコードの紹介でした。

#htmlinsert(windev-btm.html)


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS