我想计算在数据库中保存2次的时间跨度。 所以从字面上看,我想知道两个值之间的时间长度。
14:10:20 - 10:05:15 = 02:05:05
结果将是02:05:05。
我如何使用C#实现这一目标?
14:10:20是我在数据库中保存的格式。
答案 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());