2020年09月18日
川俣晶の縁側ソフトウェアC# コーディング How Tototal 1031 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

Facebook

COOL C# CREW

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

C#ハウツー: 逆引き入門・こんな機能はどう書くの?
キーワード【 川俣晶の縁側ソフトウェアC# コーディング How To
【C# コーディング How To】の次のコンテンツ
2020年
09月
19日
【入門級】整数の平均値を実数で計算したい
3days 0 count
total 822 count
【C# コーディング How To】の前のコンテンツ
2020年
09月
17日
【入門級】1から100までの偶数の合計を【ループなし】で書く
3days 0 count
total 929 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20200918085846
サイトの表紙【C# コーディング How To】の表紙【C# コーディング How To】のコンテンツ全リスト 【C# コーディング How To】の入手全リスト 【C# コーディング How To】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.