109

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

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

6 に答える 6

209

次のことができます。

TimeSpan duration = b - a;

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

duration.TotalSeconds
duration.TotalMinutes

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

于 2009-05-10T14:11:25.110 に答える
21

次を試してください

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で好みに合わせて調整できます。

于 2009-05-10T13:59:33.687 に答える
3

あなたはおそらく探していますか:

int Difference = (a-b).Hours;
于 2009-05-10T14:03:36.293 に答える
1
var theDiff24 = (b-a).Hours
于 2009-05-10T14:19:45.453 に答える
1
int hours = (int)Math.Round((b - a).TotalHours)
于 2009-05-10T14:14:55.237 に答える
-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 t1は4:00AMの値を取得します

このコードを確認すると、誰かに役立つかもしれません。

于 2016-02-25T06:41:24.470 に答える