C-SHARP - 6.3 TimeSpan
Là où DateTime répond à la question « quand ? », TimeSpan répond à la question « combien de temps ? ». Cette structure du framework .NET représente une durée : un intervalle entre deux instants, ou plus simplement une quantité de jours, d'heures, de minutes ou de secondes. C'est le type que vous utiliserez pour exprimer une période d'attente, la durée d'une session, ou la différence entre deux dates.
La création d'un TimeSpan peut se faire par constructeur direct, ou via les méthodes statiques FromDays, FromHours, FromMinutes, FromSeconds et FromMilliseconds. Ces helpers rendent le code beaucoup plus lisible : TimeSpan.FromHours(2.5) exprime sans ambiguïté une durée de deux heures et demie. Une opération courante consiste à soustraire deux DateTime entre eux : le résultat est précisément un TimeSpan.
L'accès aux composants se fait par paires de propriétés. Days, Hours, Minutes, Seconds retournent la décomposition naturelle de la durée. TotalDays, TotalHours, TotalMinutes, TotalSeconds retournent la durée complète exprimée dans l'unité demandée, sous forme de double. Ce sont les Total* qu'il faut privilégier dès qu'on a besoin de la durée entière dans une seule unité (par exemple pour calculer un coût horaire).
Les TimeSpan se combinent naturellement par addition et soustraction, et se comparent avec les opérateurs habituels. Ajouter un TimeSpan à un DateTime retourne un nouveau DateTime décalé d'autant. Cette interopérabilité fait des deux types un duo indissociable pour traiter le temps en C#.