差分はどうやって得る? §
ここに日付時刻が入った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