簡體   English   中英

如何在C#中計算累積時間?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM