【C#】日時の差分を求める(TimeSpan、Days)

TimeSpan構造体とは?

TimeSpan構造体とは、時間間隔を表します。

■公式ドキュメント
https://docs.microsoft.com/ja-jp/dotnet/api/system.timespan?view=net-5.0

ここでは、「時間を処理するために用意された便利なもの」と覚えてもらって大丈夫です。

 

サンプルコード(日の差分を求める)

using System;
namespace c_timespan
{
    public static class Days
    {
      // yyyyMMdd形式文字列から日付値を取得するメソッド
        public static DateTime? GetDateTimeFromString(string s)
        {
            if (DateTime.TryParseExact(s, "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out DateTime dt))
            {
                return dt; //DateTime型の変数dtを返す
            }

            return null;  // DateTime?でnullを返せる
        }
    }
}
using System;

namespace c_timespan
{
    class Program
    {
        static void Main(string[] args)
        {
            var startDatetime = Days.GetDateTimeFromString("20210401");
            var endDatetime = Days.GetDateTimeFromString("20210408");

            if (!(endDatetime == null || startDatetime == null))
            {
              // 終了日 - 開始日の差分を求める
                TimeSpan ts = Convert.ToDateTime(endDatetime) - Convert.ToDateTime(startDatetime);

              // TimeSpanのDaysプロパティで日数を表示
                var days = ts.Days;

                Console.WriteLine(days);
            }
        }
    }
}

 

実行結果:
7

 

おすすめ書籍

■C#を学習し始めた方向け
やさしいC 第3版 (「やさしい」シリーズ)

1週間でCの基礎が学べる本

確かな力が身につくC「超」入門 第2版 (Informatics&IDEA)