有人知道如何计算2次之间的总小时数吗? 例如,如果一名工人在8:00和16:00退出,我想知道十进制是8.0小时,而且是8:00小时。
我正在使用C#framework 2.0。 保持输入和输出时间的变量是字符串类型。
TY
答案 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和本地时区都是正确的。如果任一输入上的DateTimeKind
为Unspecified
,则返回值未定义(这是一种说法可能不正确的奇特方式)。
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 difference = datetime2 - datetime1;
double totalHours = difference.TotalHours;