Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

C#辞典

  1. トップページ
  2. C#辞典
  3. TimeSpan / 日時の差分計算

TimeSpan / 日時の差分計算

2つの日時の差分や時間間隔を表す『TimeSpan』型と、日時同士を引き算して時間の差を求める方法です。

構文
// 2つの日時を引いて差分を求めます。
TimeSpan 差分 = 日時2 - 日時1;

// TimeSpan を直接作成します。
TimeSpan ts = new TimeSpan(int hours, int minutes, int seconds);
TimeSpan ts = new TimeSpan(int days, int hours, int minutes, int seconds);

// 静的メソッドで作成します。
TimeSpan ts = TimeSpan.FromDays(double value);
TimeSpan ts = TimeSpan.FromHours(double value);
TimeSpan ts = TimeSpan.FromMinutes(double value);
メソッド一覧
メンバー概要
.Days日数の整数部分を返します(端数は切り捨て)。
.Hours時間の部分(0〜23)を返します。
.Minutes分の部分(0〜59)を返します。
.Seconds秒の部分(0〜59)を返します。
.TotalDays差分を日数(小数含む)で返します。
.TotalHours差分を総時間数(小数含む)で返します。
.TotalMinutes差分を総分数(小数含む)で返します。
TimeSpan.FromDays(n)n 日間の TimeSpan を作成します。
サンプルコード
using System;

// 日時の差分を計算します。
DateTime 開始 = new DateTime(2024, 1, 1, 9, 0, 0);
DateTime 終了 = new DateTime(2024, 1, 3, 17, 30, 0);

TimeSpan 差分 = 終了 - 開始;
Console.WriteLine($"日数: {差分.Days}");          // 2
Console.WriteLine($"時間: {差分.Hours}");          // 8
Console.WriteLine($"分: {差分.Minutes}");          // 30
Console.WriteLine($"総時間数: {差分.TotalHours}"); // 56.5
Console.WriteLine($"総分数: {差分.TotalMinutes}"); // 3390

// 処理時間の計測に使います。
DateTime 計測開始 = DateTime.Now;
// ...何らかの処理...
System.Threading.Thread.Sleep(100); // 100ミリ秒待機(例示用)
TimeSpan 経過 = DateTime.Now - 計測開始;
Console.WriteLine($"経過時間: {経過.TotalMilliseconds:F0} ミリ秒");

// TimeSpan を直接作成します。
TimeSpan 作業時間 = new TimeSpan(8, 30, 0); // 8時間30分
Console.WriteLine($"作業時間: {作業時間.TotalHours} 時間");

// 期限まで何日かを計算します。
DateTime 締め切り = new DateTime(2024, 12, 31);
TimeSpan 残り = 締め切り - DateTime.Today;
Console.WriteLine($"締め切りまであと {(int)残り.TotalDays} 日");
概要

『TimeSpan』は時間の長さを表す型です。.Days は差分の「日数部分のみ」を返しますが、.TotalDays は差分全体を日数換算した値(小数含む)を返します。目的に合わせて使い分けてください。

処理時間の計測には System.Diagnostics.Stopwatch クラスがより適しています。Stopwatch.StartNew() で開始し、stopwatch.Elapsed で経過時間を取得できます。

日時の書式化や加算は『日時.ToString() / 日時.AddDays()』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。