你如何计算C#的累积时间?

时间:2008-09-25 07:02:21

标签: c# datetime time

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

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

结果将是02:05:05。

我如何使用C#实现这一目标?

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

3 个答案:

答案 0 :(得分:7)

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

E.g。 TimeSpan difference = t1.Subtract(t2);

答案 1 :(得分:3)

您的第一步是将数据库中存储的时间值转换为.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-Library以找到您需要的文件。

答案 2 :(得分:0)

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

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