109

我需要一个可以将以下两个日期之间的差返回为 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;

时间跨度类中有很多内置方法可以满足您的需要,即

duration.TotalSeconds
duration.TotalMinutes

更多信息可以在这里找到。

于 2009-05-10T14:11:25.110 回答
21

尝试以下

double hours = (b-a).TotalHours;

如果您只想要不包括天数差异的小时差,您可以使用以下

int hours = (b-a).Hours;

这两个属性的差异主要体现在时差超过 1 天时。Hours 属性只会报告两个日期之间的实际小时差。因此,如果两个日期相差 100 年但同时发生在一天中,则小时数将返回 0。但 TotalHours 将返回两个日期之间发生的总小时数之间的差值(在本例中为 876,000 小时)。

另一个区别是 TotalHours 将返回小数小时。这可能是也可能不是您想要的。如果没有,Math.Round 可以根据您的喜好进行调整。

于 2009-05-10T13:59:33.687 回答
3

您是否正在寻找:

int Difference = (a-b).Hours;
于 2009-05-10T14:03:36.293 回答
1
int hours = (int)Math.Round((b - a).TotalHours)
于 2009-05-10T14:14:55.237 回答
1
var theDiff24 = (b-a).Hours
于 2009-05-10T14:19:45.453 回答
-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 回答