两个日期时间 C# 之间的区别?

Posted

技术标签:

【中文标题】两个日期时间 C# 之间的区别?【英文标题】:Difference between two DateTimes C#? 【发布时间】:2010-10-25 03:04:01 【问题描述】:

我需要一个可以将以下两个日期之间的差返回为 24 的函数。

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

【问题讨论】:

【参考方案1】:

您可以执行以下操作:

TimeSpan duration = b - a;

timespan 类中有很多内置方法可以满足您的需求,即

duration.TotalSeconds
duration.TotalMinutes

更多信息可以在here找到。

【讨论】:

TimeSpan span = x.ShiftEndTime.Subtract(x.ShiftStartTime) if (span.TotalHours == 24) do...【参考方案2】:

试试下面的

double hours = (b-a).TotalHours;

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

int hours = (b-a).Hours;

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

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

【讨论】:

还是错了。 TotalHours 是一个双精度值,返回整数小时数和分数小时数。 这是该问题的正确答案,他希望结果为 24。当然,如果这是他想要的,他可以很容易地自己完成 TotalHours。 @James 我的回答正好是 24。 OP 没有指定该值必须是特定的数字格式。 @abmv: "OP" - 原始海报。在这种情况下,你。 @Jared,我知道我同意你的看法。我认为您的答案比选择的答案更好。【参考方案3】:

您是否正在寻找:

int Difference = (a-b).Hours;

【讨论】:

实际上需要 int Difference = (a-b).TotalHours;【参考方案4】:
var theDiff24 = (b-a).Hours

【讨论】:

【参考方案5】:
int hours = (int)Math.Round((b - a).TotalHours)

【讨论】:

【参考方案6】:

使用此方法将显示黑白与时间的时差。

 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

的值

检查此代码可能对某人有所帮助。

【讨论】:

以上是关于两个日期时间 C# 之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MS Access 在 C# 中的两个日期之间进行搜索

使用c#在两个日期之间插入mysql数据

获取两个日期时间选择器选择的两天之间的记录,并在 Visual Studio C# 中用它们填充数据网格视图

在 C# 中比较两个日期并计算差异

C#计算两个日期之间相差的天数

两个日期之间的天数 C++