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

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

结果将是02:05:05。

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

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

有帮助吗?

解决方案

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

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

其他提示

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

DateTime对象支持“ - ”运算符,这样您就可以将时间读入这些对象并减去它们。要进行测试,请查看:

DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top