2020年09月18日
川俣晶の縁側ソフトウェアC# コーディング How To total 1013 count

【入門級】時間の差分を計算する

Written By: 川俣 晶連絡先

差分はどうやって得る? §

 ここに日付時刻が入ったDateTime型の変数が2つあるとします。

 その差分はどうやったら分かるのでしょうか。

 たとえば、一つが2020年1月1日10時37分で、もう1つが2020年1月1日11時21分だとすると、その間の差分は何分でしょうか。

日付時刻の差分はこう取れ §

 DateTime型にはSubtractメソッドがあります。これで差分を計算できます。

 差分はTimeSpan型になります。

 しかし、もっと簡単に計算する方法があります。

 2つのDateTime型の値でマイナス演算子を使って引き算を実行するのです。

 DateTime型とDateTime型の引き算は定義されているので、これは実行できます。結果はこれもTimeSpan型になります。

罠の数々 §

  • DateTime型と似て非なるDateTimeOffset型が使われることも多いので注意しよう。その場合もやることは大差ない。
  • 日付時刻の扱いは厳密に言うとC#ではなく.NETの問題である。
  • 日付と時刻を分離して扱う手段はない。タイムゾーンが変わると時刻だけでなく日付も変わってしまうことがあるからだ。

参考リンク §

DateTime コンストラクター

DateTimeOffset 構造体

DateTime.Subtract メソッド

DateTime.Subtraction 演算子

 DateTime型とDateTimeOffset型は似ているが別の型である。

 Subtract メソッドとSubtraction 演算子は名前が似ているが別の機能である。

 上のリンクから確認しておこう。

リポジトリ §

https://github.com/autumn009/cshowto

DiffDateTime §

using System;

class Program

{

    static void Main()

    {

        // 2020年1月1日10時37分

        var time1 = new DateTime(2020, 1, 1, 10, 37, 0);

        // 2020年1月1日11時21分

        var time2 = new DateTime(2020, 1, 1, 11, 21, 0);

        // Subtractメソッド使用

        Console.WriteLine(time2.Subtract(time1));

        // マイナス演算子使用

        Console.WriteLine(time2 - time1);

    }

}

実行結果

00:44:00

00:44:00

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?