C# 日時の差分を求めるサンプル

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

目次

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

日の差分を求める

public struct TimeSpan
  public int Days { get; }
  public double TotalDays { get; }

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

using System;
class Test1
{
    static void Main()
    {
        // 指定日時をセット 2020/1/2
        DateTime dt1 = new DateTime(2020, 1, 2, 10, 0, 0);

        // 指定日時をセット 2019/12/31
        DateTime dt2 = new DateTime(2019, 12, 31, 0, 0, 0);

        // 引き算
        TimeSpan ts1 = dt1 - dt2;

        Console.WriteLine(ts1.Days); // 2
        Console.WriteLine(ts1.TotalDays); // 2.41666666666667
    }
}

DateTimeのコンストラクタの引数に年月日と時分秒は0を指定して引き算します。
引き算の結果の日の差分はTimeSpanのDaysプロパティで取得します。
Daysは、時分秒を含まず計算します。
TotalDaysは、時分秒を含んで計算します。

 

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

public struct TimeSpan
  public int TotalHours { get; }
  public double TotalMinutes { get; }
  public double TotalSeconds { get; }

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

using System;
class Test1
{
	static void Main()
	{
		// 指定日時をセット 2020/1/3 10:00:00
		DateTime dt1 = new DateTime(2020, 1, 3, 10, 0, 0);

		// 指定日時をセット 2019/1/1 10:00:00
		DateTime dt2 = new DateTime(2020, 1, 1, 10, 0, 0);

		// 引き算
		TimeSpan ts1 = dt1 - dt2;

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

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

月の差分を求める

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

using System;
class Test1
{
	static void Main()
	{
		// 指定日時をセット 2019/10/01
		DateTime dt1 = new DateTime(2019, 10, 1, 0, 0, 0);

		// 指定日時をセット 2020/01/01
		DateTime dt2 = new DateTime(2020, 1, 1, 0, 0, 0);

		// 引き算
		int ts1 = dt2.Month - dt1.Month + (12*(dt2.Year - dt1.Year));

		Console.WriteLine(ts1); // 3
	}
}

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

関連の記事

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

△上に戻る