1

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

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

所以结果是 02:05:05。

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

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

4

3 回答 3

7

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

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

于 2008-09-25T07:04:22.600 回答
3

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

如果将它们作为 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 以找到您需要的那些。

于 2008-09-25T07:59:29.270 回答
0

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

DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());
于 2008-09-25T07:11:35.313 回答