web-dev-qa-db-ja.com

2つのDateTimes C#の違いは?

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

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

次のことができます。

TimeSpan duration = b - a;

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

duration.TotalSeconds
duration.TotalMinutes

詳細は こちら をご覧ください。

165
Joey Robert

以下をお試しください

double hours = (b-a).TotalHours;

日数の差を除いて時間差だけが必要な場合は、次を使用できます

int hours = (b-a).Hours;

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

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

16
JaredPar

おそらく探していますか:

int Difference = (a-b).Hours;
3
Vilx-
int hours = (int)Math.Round((b - a).TotalHours)
1
Damien

この方法を使用すると、時間との時間差が表示されます。

 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 t1値をキャプチャします4:00 AM

このコードが誰かに役立つかもしれないことを確認してください。

0
Darshan
var theDiff24 = (b-a).Hours
0
diadiora