[C# DateTime] 演算子を使った日付の計算(+、- )

DateTime構造体は演算子を使って日付や時間間隔の計算をすることができます。

スポンサーリンク

TimeSpan構造体について

DateTimeを演算子を使って計算する場合、式や演算の結果にTimeSpan構造体という時間間隔を表すデータを使うことがあります。

TimeSpanの使い方

TimeSpanの初期化はこんな感じです。
それぞれマイナスの値を設定することもできます。

// Tickを指定してTimeSpanを作成
TimeSpan span1 = new TimeSpan(1000);

// Hours、Minute、Secondを指定してTimeSpanを作成
TimeSpan span2 = new TimeSpan(1, 2, 3);

// Days、Hours、Minute、Secondを指定してTimeSpanを作成
TimeSpan span3 = new TimeSpan(1, 2, 3, 4);

// Days、Hours、Minute、Second、MilliSecondsを指定してTimeSpanを作成
TimeSpan span4 = new TimeSpan(1, 2, 3, 4, 5);

TimeSpanはメンバーに間隔の情報(時間、分、秒など)を持っています。
Ticksは最小の時間の単位で1Tickは100万分の1秒を表します。
Totalなんとかはすべてをその単位で表したいときに使います。たとえばDaysが4ならTotalHoursは48になります。

using System;
class Program
{
    public static void Main()
    {
        // Days、Hours、Minute、Second、MilliSecondsを指定してTimeSpanを作成
        TimeSpan span = new TimeSpan(1, 10, 13, 30, 123);

        // TimeSpanの結果表示
        Console.WriteLine($"ToString    = {span.ToString()}");
        Console.WriteLine($"Days        = {span.Days}");
        Console.WriteLine($"Hours       = {span.Hours}");
        Console.WriteLine($"Minutes     = {span.Minutes}");
        Console.WriteLine($"Seconds     = {span.Seconds}");
        Console.WriteLine($"Milliseconds= {span.Milliseconds}");
        Console.WriteLine($"Ticks       = {span.Ticks}");
        Console.WriteLine($"TotalDays        = {span.TotalDays}");
        Console.WriteLine($"TotalHours       = {span.TotalHours}");
        Console.WriteLine($"TotalMinutes     = {span.TotalMinutes}");
        Console.WriteLine($"TotalSeconds     = {span.TotalSeconds}");
        Console.WriteLine($"TotalMilliseconds= {span.TotalMilliseconds}");
    }
}
ToString    = 1.10:13:30.1230000
Days        = 1
Hours       = 10
Minutes     = 13
Seconds     = 30
Milliseconds= 123
Ticks       = 1232101230000
TotalDays        = 1.4260430902777779
TotalHours       = 34.22503416666667
TotalMinutes     = 2053.50205
TotalSeconds     = 123210.123
TotalMilliseconds= 123210123
スポンサーリンク

加算( + )

演算子+DateTimeTimeSpanを使います。ある日付時刻に4時間5分を足すという感じです。計算結果はDateTime型になります。

using System;
class Program
{
    public static void Main()
    {
        DateTime date = DateTime.Parse("2020/05/25 22:55:10");
        TimeSpan span = new TimeSpan(5, 13, 52);

        // DateTimeとTimeSpanの加算
        DateTime result = date + span;

        // 結果の表示
        Console.WriteLine($"date        = {date}");
        Console.WriteLine($"span        = {span}");
        Console.WriteLine($"date + span = {result}");
    }
}
date        = 2020/05/25 22:55:10
span        = 05:13:52
date + span = 2020/05/26 4:09:02

TimeSpanにマイナスの値を指定して加算することもできます。
こんな感じです。

using System;
class Program
{
    public static void Main()
    {
        DateTime date = DateTime.Parse("2020/05/25 22:55:10");
        TimeSpan span = new TimeSpan(-5, -13, -52);

        // DateTimeとTimeSpanの加算
        DateTime result = date + span;

        // 結果の表示
        Console.WriteLine($"date        = {date}");
        Console.WriteLine($"span        = {span}");
        Console.WriteLine($"date + span = {result}");
    }
}
date        = 2020/05/25 22:55:10
span        = -05:13:52
date + span = 2020/05/25 17:41:18
スポンサーリンク

減算( – )

減算は2パターンの計算ができます。
「DateTime – DateTime」、「DateTime – TimeSpan」

日付同士の減算

DateTime同士の計算が出来ます。左辺の日付から右辺の日付を引いた差を求めることが出来ます。
計算の結果はTimeSpan構造体という時間の間隔を表すデータになります。

using System;
class Program
{
    public static void Main()
    {
        DateTime date1 = DateTime.Parse("2020/05/30 13:14:15");
        DateTime date2 = DateTime.Parse("2020/05/26 01:01:01");

        // 演算子 - はDateTime同士の計算に使える
        TimeSpan span = date1 - date2;

        // TimeSpanの結果表示
        Console.WriteLine($"ToString    = {span.ToString()}");
        Console.WriteLine($"Days        = {span.Days}");
        Console.WriteLine($"Hours       = {span.Hours}");
        Console.WriteLine($"Minutes     = {span.Minutes}");
        Console.WriteLine($"Seconds     = {span.Seconds}");
        Console.WriteLine($"Milliseconds= {span.Milliseconds}");
        Console.WriteLine($"Ticks       = {span.Ticks}");
        Console.WriteLine($"TotalDays        = {span.TotalDays}");
        Console.WriteLine($"TotalHours       = {span.TotalHours}");
        Console.WriteLine($"TotalMinutes     = {span.TotalMinutes}");
        Console.WriteLine($"TotalSeconds     = {span.TotalSeconds}");
        Console.WriteLine($"TotalMilliseconds= {span.TotalMilliseconds}");
    }
}
ToString    = 4.12:13:14
Days        = 4
Hours       = 12
Minutes     = 13
Seconds     = 14
Milliseconds= 0
Ticks       = 3895940000000
TotalDays        = 4.509189814814815
TotalHours       = 108.22055555555555
TotalMinutes     = 6493.233333333334
TotalSeconds     = 389594
TotalMilliseconds= 389594000

日付と時間間隔の減算

左辺の日付時刻から右辺の時間間隔(4時間5分)を引くという感じです。

using System;
class Program
{
    public static void Main()
    {
        DateTime date = DateTime.Parse("2020/05/25 22:55:10");
        TimeSpan span = new TimeSpan(5, 13, 52);

        // DateTimeとTimeSpanの減算
        DateTime result = date - span;

        // 結果の表示
        Console.WriteLine($"date        = {date}");
        Console.WriteLine($"span        = {span}");
        Console.WriteLine($"date - span = {result}");
    }
}
date        = 2020/05/25 22:55:10
span        = 05:13:52
date - span = 2020/05/25 17:41:18

C# プログラミング講座に戻る

コメント

タイトルとURLをコピーしました