[英]How do you calculate accumulative time in C#?
我想計算兩次保存在數據庫中的時間間隔。 所以從字面上我想知道兩個值之間的時間長度。
14:10:20-10:05:15 = 02:05:05
因此結果將是02:05:05。
我將如何使用C#實現這一目標?
14:10:20是我將其保存在數據庫中的格式。
將兩個時間值讀入TimeSpan變量,然后對較大的TimeSpan變量執行.Subtract()
以獲取TimeSpan結果。
例如, TimeSpan difference = 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庫以查找所需的庫。
DateTime對象支持“-”運算符,因此您可以將時間讀入此類對象並將其減去。 要測試,請檢查以下內容:
DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.