Question

Je souhaite 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 2 valeurs.

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

Le résultat serait donc 02:05:05.

Comment pourrais-je y parvenir en utilisant C #?

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

Était-ce utile?

La solution

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); .

Autres conseils

Votre première étape consistera à récupérer les timevalues ??stockées dans votre base de données dans des structures .NET DateTime .

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

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

Votre implémentation peut différer, consultez la documentation ADO.NET dans la bibliothèque MSDN.

Si vous avez déjà une chaîne représentant l'heure, vous pouvez l'analyser dans un DateTime à l'aide des méthodes statiques

.
DateTime.Parse 

ou

DateTime.ParseExact

Dans votre cas, vous devrez peut-être utiliser ParseExact , qui peut être fourni avec une chaîne de format définissant le mode de lecture de la chaîne. Vous trouverez des exemples dans la bibliothèque MSDN.

Les durées dans .NET sont stockées dans une structure TimeSpan . Obtenir le temps écoulé entre les dates et heures est facile:

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

écoulé contient maintenant la période entre les deux DateTimes . Il y a plusieurs membres pour que la structure accède au TimeSpan . Recherchez dans MSDN-Library ceux dont vous avez besoin.

Les objets DateTime prennent en charge les " - " opérateur afin que vous puissiez simplement lire vos temps dans de tels objets et les soustraire. Pour tester, vérifiez ceci:

DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top