c#时间计算

时间:2010-08-25 12:25:17

标签: c# time

有人知道如何计算2次之间的总小时数吗? 例如,如果一名工人在8:00和16:00退出,我想知道十进制是8.0小时,而且是8:00小时。

我正在使用C#framework 2.0。 保持输入和输出时间的变量是字符串类型。

TY

5 个答案:

答案 0 :(得分:9)

        DateTime start = new DateTime(2010, 8, 25, 8, 0, 0);
        DateTime end = new DateTime(2010, 8, 25, 16, 0, 0);
        Console.WriteLine((end - start).TotalHours);

表示字符串:

        DateTime start = DateTime.Parse("8:00");
        DateTime end = DateTime.Parse("16:00");
        Console.WriteLine((end - start).TotalHours);

答案 1 :(得分:1)

我想出了这种夏令时安全的方法。该功能对于UTC和本地时区都是正确的。如果任一输入上的DateTimeKindUnspecified,则返回值未定义(这是一种说法可能不正确的奇特方式)。

private double TotalHours(DateTime earliest, DateTime latest)
{
    earliest = (earliest.Kind == DateTimeKind.Local) ? earliest.ToUniversalTime() : earliest;
    latest = (latest.Kind == DateTimeKind.Local) ? latest.ToUniversalTime() : latest;
    return (latest - earliest).TotalHours;
}

答案 2 :(得分:0)

您可以通过减去两个日期时间并使用生成的TotalHours的{​​{1}}属性来执行此操作。下面是一个例子:

Timespan

答案 3 :(得分:0)

System.DateTime punchIn = new System.DateTime(2010, 8, 25, 8, 0, 0);

System.DateTime punchOut = new System.DateTime(2010, 8, 25, 16, 0, 0);

System.TimeSpan diffResult = punchOut.Subtract(punchIn);

答案 4 :(得分:0)

结帐TimeSpan.TotalHours

TimeSpan difference = datetime2 - datetime1;
double totalHours = difference.TotalHours;