117 votes

Différence entre deux DateTimes C# ?

J'ai besoin d'une fonction qui puisse retourner la différence entre les deux dates ci-dessous sous la forme de 24.

DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);

221voto

Joey Robert Points 2488

Vous pouvez procéder comme suit :

TimeSpan duration = b - a;

Il y a beaucoup de méthodes intégrées dans la classe timespan pour faire ce dont vous avez besoin.

duration.TotalSeconds
duration.TotalMinutes

Plus d'informations sont disponibles ici .

1 votes

TimeSpan span = x.ShiftEndTime.Subtract(x.ShiftStartTime) if (span.TotalHours == 24) {do...}

25voto

JaredPar Points 333733

Essayez ce qui suit

double hours = (b-a).TotalHours;

Si vous souhaitez simplement connaître la différence d'heures sans tenir compte de la différence de jours, vous pouvez utiliser la méthode suivante

int hours = (b-a).Hours;

La différence entre ces deux propriétés s'observe principalement lorsque le décalage horaire est supérieur à 1 jour. La propriété Hours n'indique que la différence horaire réelle entre les deux dates. Ainsi, si deux dates diffèrent de 100 ans mais se produisent au même moment de la journée, hours renvoie 0. Mais TotalHours renverra la différence entre le nombre total d'heures qui se sont écoulées entre les deux dates (876 000 heures dans ce cas).

L'autre différence est que TotalHours renvoie des fractions d'heures. Cela peut correspondre ou non à ce que vous souhaitez. Dans le cas contraire, Math.Round peut l'ajuster à votre convenance.

0 votes

Toujours faux. TotalHours est un double, qui renvoie les heures entières et fractionnées.

0 votes

C'est la bonne réponse à la question, il veut que le résultat soit 24, ce qui est le cas. Bien sûr, il pourrait arrondir le nombre total d'heures lui-même assez facilement si c'est ce qu'il veut.

0 votes

@James ma réponse produit 24 exactement. L'OP n'a pas spécifié que la valeur devait avoir un format numérique particulier.

3voto

Vilx- Points 37939

Vous êtes peut-être à la recherche de :

int Difference = (a-b).Hours;

0 votes

Il faudrait en fait que ce soit int Difference = (a-b).TotalHours ;

1voto

Damien Points 747
int hours = (int)Math.Round((b - a).TotalHours)

1voto

diadiora Points 448
var theDiff24 = (b-a).Hours

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X