如何在C#中计算累计时间?
时间:2020-03-06 14:42:25 来源:igfitidea点击:
我想计算保存在数据库中的2次之间的时间跨度。
所以从字面上我想知道两个值之间的时间长度。
14:10:20 10:05:15 = 02:05:05
因此结果将是02:05:05.
我将如何使用C#实现这一目标?
14:10:20是我将其保存在数据库中的格式。
解决方案
将两个时间值读入TimeSpan变量,然后对较大的TimeSpan变量执行.Subtract()
以获取TimeSpan结果。
例如。 TimeSpan差异= t1.Subtract(t2);。
DateTime对象支持"-"运算符,因此我们可以将时间读入此类对象并将其减去。要进行测试,请检查以下内容:
DateTime then = DateTime.Now; Thread.Sleep(500); DateTime now = DateTime.Now; TimeSpan time = now - then; MessageBox.Show(time.ToString());
第一步是将存储在数据库中的时间值转换为.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;
现在,"已过去"包含两个" DateTimes"之间的时间跨度。该结构有多个成员可以访问" TimeSpan"。查看MSDN库以查找所需的库。