【问题标题】:How do you calculate accumulative time in C#?你如何计算C#中的累积时间?
【发布时间】:2008-09-25 07:02:21
【问题描述】:

我想计算我保存在数据库中的 2 次之间的时间跨度。 所以从字面上看,我想知道这两个值之间的时间长度。

14:10:20 - 10:05:15 = 02:05:05

所以结果是 02:05:05。

如何使用 C# 来实现这一点?

14:10:20 是我在数据库中保存的格式。

【问题讨论】:

    标签: c# datetime time


    【解决方案1】:

    将两个时间值读入 TimeSpan 变量,然后对较大的 TimeSpan 变量执行.Subtract() 以获得 TimeSpan 结果。

    例如TimeSpan difference = t1.Subtract(t2);.

    【讨论】:

    • t1 - t2 会做同样的事情,而且更容易看。
    【解决方案2】:

    您的第一步是将存储在数据库中的时间值放入 .NET DateTime 结构中。

    如果您将它们作为 SQL-DateTime 值存储在数据库中,则可以直接以 DateTime 的形式获取它们。它看起来像这样:

    SQLCommand getTimeCommand = new SQLCommand("SELECT time FROM table", dbConnection);
    SQLDataReader myReader = getTimeCommand.ExecuteReader();
    while (myReader.Read())
    {
        DateTime time = myReader.GetDateTime(0);
    }
    myReader.Close();
    

    您的实现可能会有所不同,请参阅 MSDN 库中的 ADO.NET 文档。

    如果您已经得到一个表示时间的字符串,您可以使用静态方法将该字符串解析为DateTime

    DateTime.Parse 
    

    DateTime.ParseExact
    

    在您的情况下,您可能需要使用ParseExact,它可以提供一个格式字符串来定义如何读取字符串。示例应在 MSDN 库中找到。

    .NET 中的持续时间存储在 TimeSpan 结构中。获取日期时间之间的经过时间很容易:

    DateTime time1, time2; //filled with your timevalues from the db
    TimeSpan elapsed = d2 - d1;
    

    elapsed 现在包含两个DateTimes 之间的时间跨度。该结构有几个成员可以访问TimeSpan。查看 MSDN 库以找到您需要的。

    【讨论】:

      【解决方案3】:

      DateTime 对象支持“-”运算符,因此您可以将时间读入此类对象并减去它们。要测试,请查看:

      DateTime then = DateTime.Now;
      Thread.Sleep(500);
      DateTime now = DateTime.Now;
      TimeSpan time = now - then;
      MessageBox.Show(time.ToString());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-11
        • 2020-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多