2008-09-25 13 views
1

Je veux calculer l'intervalle de temps entre 2 fois que j'ai enregistré dans une base de données. Donc, littéralement, je veux connaître la durée entre les deux valeurs.Comment calculez-vous le temps accumulé en C#?

14:10:20 - 10:05:15 = 02:05:05

Ainsi, le résultat serait 02:05:05.

Comment est-ce que je serais capable de réaliser cela en utilisant C#?

14:10:20 est le format dans lequel je l'ai enregistré dans ma base de données.

Répondre

7

Lisez les deux valeurs de temps dans les variables TimeSpan, puis effectuez un .Subtract() sur la plus grande variable TimeSpan pour obtenir le résultat TimeSpan.

E.g. TimeSpan difference = t1.Subtract(t2);.

+1

t1 - t2 fera de même et est plus facile pour les yeux. –

+0

j'aime la surpuissance –

0

Les objets DateTime prennent en charge l'opérateur "-" de sorte que vous pouvez simplement lire vos temps dans ces objets et les soustraire. Pour tester, vérifier cela:

DateTime then = DateTime.Now; 
Thread.Sleep(500); 
DateTime now = DateTime.Now; 
TimeSpan time = now - then; 
MessageBox.Show(time.ToString()); 
3

Votre première étape sera d'obtenir les timevalues ​​stockés dans votre base de données dans .NET DateTime struct.

Si vous les avez stockés en tant que valeurs SQL-DateTime dans la base de données, vous pouvez les obtenir directement sous la forme DateTime. Il ressemblerait à quelque chose comme ceci:

SQLCommand getTimeCommand = new SQLCommand("SELECT time FROM table", dbConnection); 
SQLDataReader myReader = getTimeCommand.ExecuteReader(); 
while (myReader.Read()) 
{ 
    DateTime time = myReader.GetDateTime(0); 
} 
myReader.Close(); 

Votre mise en œuvre peut être différente, reportez-vous à la documentation de ADO.NET dans la bibliothèque MSDN.

Si vous avez déjà obtenu une chaîne représentant le temps que vous pouvez analyser la chaîne dans un DateTime en utilisant les méthodes statiques

DateTime.Parse 

ou

DateTime.ParseExact 

Dans votre cas, vous pourriez avoir besoin d'utiliser ParseExact, qui peut être fourni avec une chaîne de format définissant comment lire la chaîne. Des exemples doivent être trouvés dans la bibliothèque MSDN.

Les durées dans .NET sont stockées dans une struct TimeSpan. Obtenir le temps écoulé entre la datetimes est facile:

DateTime time1, time2; //filled with your timevalues from the db 
TimeSpan elapsed = d2 - d1; 

elapsed contient maintenant timespan entre les deux DateTimes. Il y a plusieurs membres pour que la structure puisse accéder au TimeSpan. Regardez dans la bibliothèque MSDN pour trouver ceux dont vous avez besoin.

+0

Bien présenté! – xan

Questions connexes