2つのDateTimes C#の違いは?


97

以下の2つの日付の差を24として返すことができる関数が必要です。

DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);

回答:


185

次のことができます。

TimeSpan duration = b - a;

タイムスパンクラスには、必要なことを行うための組み込みメソッドがたくさんあります。

duration.TotalSeconds
duration.TotalMinutes

詳細については、こちらをご覧ください


1
TimeSpan span = x.ShiftEndTime.Subtract(x.ShiftStartTime)if(span.TotalHours == 24){do ...}
abmv 2009年

19

以下をお試しください

double hours = (b-a).TotalHours;

日差を除いた時差が必要な場合は、以下を使用できます

int hours = (b-a).Hours;

これら2つのプロパティの違いは、主に時差が1日を超える場合に見られます。Hoursプロパティは、2つの日付間の実際の時差のみを報告します。したがって、2つの日付の差が100年であるが1日の中で同時に発生した場合、時間は0を返します。ただし、TotalHoursは、2つの日付の間に発生した合計時間の差(この場合は876,000時間)を返します。

他の違いは、TotalHoursは端数時間を返すことです。これは必要な場合とそうでない場合があります。そうでない場合は、Math.Roundで好みに合わせて調整できます。


まだ間違っています。TotalHoursはdoubleであり、全体の時間と端数の時間を返します。
Vilx- 2009年

その質問に対する正しい答えは、彼は結果が24になることを望んでいます。もちろん、TotalHoursを自分で簡単に丸めることもできます。
James Avery、

@ジェームズ私の答えは正確に24を生成します。OPは、値が特定の数値形式でなければならないことを指定しませんでした。
JaredPar 2009年

1
@abmv: "OP"-オリジナルポスター。この場合、あなた。
セレブラス2009年

@Jared、私はあなたに同意していたことを知っています。あなたの答えは選ばれたものより良い答えだと思います。
James Avery、




-1

この方法を使用して、時間に対する白黒の時間差が表示されます。

 private void HoursCalculator()
    {
        var t1 = txtfromtime.Text.Trim();
        var t2 = txttotime.Text.Trim();
        var Fromtime = t1.Substring(6);
        var Totime = t2.Substring(6);
        if (Fromtime == "M")
        {
             Fromtime = t1.Substring(5);
        }
        if (Totime == "M")
        {
            Totime = t2.Substring(5);
        }

        if (Fromtime=="PM" && Totime=="AM" )
        {
            var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
            var dt2 = DateTime.Parse("1900-01-02 " + txttotime.Text.Trim());
            var t = dt1.Subtract(dt2);
            //int temp = Convert.ToInt32(t.Hours);
            //temp = temp / 2;
            lblHours.Text =t.Hours.ToString() + ":" + t.Minutes.ToString();

        }
        else if (Fromtime == "AM" && Totime == "PM")
        {
            var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
            var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
            TimeSpan t = (dt2.Subtract(dt1));
            lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
        }
        else
        {
            var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
            var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
            TimeSpan t = (dt2.Subtract(dt1));
            lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
        }
    }

フィールドIDを使用する

var t14:00 AMの値をキャプチャします

このコードをチェックすると、誰かに役立つかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.