代码之家  ›  专栏  ›  技术社区  ›  Itay.B

c#时间计算

  •  1
  • Itay.B  · 技术社区  · 14 年前

    有人知道如何计算两次之间的总小时数吗?

    我使用的是C框架2.0。 保存输入和输出时间的变量是string类型。

    5 回复  |  直到 14 年前
        1
  •  9
  •   Andrey    14 年前
            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);
    
        2
  •  1
  •   Brian Gideon    14 年前

    我想出了这个夏令时安全的方法。该函数适用于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;
    }
    
        3
  •  0
  •   ist_lion    14 年前
    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
  •   Justin Niessner    14 年前

    TimeSpan.TotalHours :

    TimeSpan difference = datetime2 - datetime1;
    double totalHours = difference.TotalHours;
    
        5
  •  0
  •   Iain Ward    14 年前

    TotalHours 结果的属性 Timespan

        DateTime start = new DateTime(2010, 8, 25, 8, 0, 0);
        DateTime end = new DateTime(2010, 8, 25, 16, 0, 0);
        int hours = end.Subtract(start).TotalHours;