Wie berechnet man die Akkumulationszeit in C#?
Frage
Ich möchte die Zeitspanne zwischen zwei Zeitpunkten berechnen, die ich in einer Datenbank gespeichert habe.Ich möchte also im wahrsten Sinne des Wortes wissen, wie viel Zeit zwischen den beiden Werten vergeht.
14:10:20 - 10:05:15 = 02:05:05
Das Ergebnis wäre also 02:05:05.
Wie könnte ich dies mit C# erreichen?
14:10:20 ist das Format, in dem ich es in meiner Datenbank gespeichert habe.
Lösung
Lesen Sie die zwei Zeitwert in Variablen Timespan, dann ein .Subtract()
auf dem größeren Span Variable führt den Timespan Ergebnis zu erhalten.
z. TimeSpan difference = t1.Subtract(t2);
.
Andere Tipps
Ihr erster Schritt besteht darin, die in Ihrer Datenbank gespeicherten Zeitwerte in .NET zu übertragen DateTime
Strukturen.
Wenn Sie sie als SQL-DateTime-Werte in der Datenbank gespeichert haben, können Sie sie direkt als abrufen DateTime
.Es würde ungefähr so aussehen:
SQLCommand getTimeCommand = new SQLCommand("SELECT time FROM table", dbConnection);
SQLDataReader myReader = getTimeCommand.ExecuteReader();
while (myReader.Read())
{
DateTime time = myReader.GetDateTime(0);
}
myReader.Close();
Ihre Implementierung kann abweichen. Weitere Informationen finden Sie in der ADO.NET-Dokumentation in der MSDN-Bibliothek.
Wenn Sie bereits eine Zeichenfolge haben, die die Zeit darstellt, können Sie die Zeichenfolge in a analysieren DateTime
mit den statischen Methoden
DateTime.Parse
oder
DateTime.ParseExact
In Ihrem Fall müssen Sie möglicherweise verwenden ParseExact
, das mit einer Formatzeichenfolge versehen werden kann, die definiert, wie die Zeichenfolge gelesen werden soll.Beispiele finden Sie in der MSDN-Bibliothek.
Dauern in .NET werden in a gespeichert TimeSpan
Struktur.Es ist einfach, die zwischen zwei Datums- und Uhrzeitangaben verstrichene Zeit zu ermitteln:
DateTime time1, time2; //filled with your timevalues from the db
TimeSpan elapsed = d2 - d1;
elapsed
enthält nun die Zeitspanne zwischen den beiden DateTimes
.Es gibt mehrere Mitglieder, auf die die Struktur zugreifen kann TimeSpan
.Suchen Sie in der MSDN-Bibliothek nach den benötigten Dateien.
Datetime-Objekte unterstützen den Operator „-“, so dass Sie nur Ihre Zeit in solche Objekte lesen und sie subtrahieren. Um zu testen, check this out:
DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());