113 votes

Calculer combien de minutes il y a entre deux heures

J'ai une datagridview dans mon application qui contient des heures de début et de fin. Je veux calculer le nombre de minutes entre ces deux heures. Jusqu'à présent, j'ai obtenu :

var varFinish = tsTable.Rows[intCellRow]["Finish Time"];
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue;
int intMinutes = TimeSpan.FromMinutes(varTime);

Mais la dernière ligne ne compile pas car elle indique que j'utilise des arguments invalides pour le constructeur de TimeSpan. J'ai fait des recherches pour savoir comment calculer le nombre de minutes entre deux heures, mais je rencontre un peu d'obstacle. Est-ce que quelqu'un pourrait me conseiller sur la meilleure façon d'atteindre mon objectif.

EDIT/

Maintenant, mon code est le suivant:

var varFinish = tsTable.Rows[intCellRow]["Finish Time"];
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue;
int intMinutes = (int)varTime.TotalMinutes;

Mais j'obtiens une conversion non valide à la seconde ligne. À la fois varFinish et varValue sont des heures par exemple 10:00 et 8:00. Donc je ne suis pas sûr pourquoi ils ne se convertissent pas en type DateTime?

209voto

Kane Points 8873

Essayez ceci

DateTime startTime = varValue
DateTime endTime = varTime

TimeSpan span = endTime.Subtract ( startTime );
Console.WriteLine( "Différence de temps (minutes) : " + span.TotalMinutes );

Éditer: Si vous essayez 'span.Minutes', cela ne renverra que les minutes de l'intervalle de temps [0~59], pour retourner la somme de toutes les minutes de cet intervalle, utilisez simplement 'span.TotalMinutes'.

37voto

Tim Schmelter Points 163781
double minutes = varTime.TotalMinutes;
int minutesRounded = (int)Math.Round(varTime.TotalMinutes);

TimeSpan.TotalMinutes: Le nombre total de minutes représenté par cette instance.

11voto

Dr. ABT Points 8119

Dans votre code de question, vous utilisez TimeSpan.FromMinutes de manière incorrecte. Veuillez consulter la Documentation MSDN pour TimeSpan.FromMinutes, qui donne la signature de méthode suivante :

public static TimeSpan FromMinutes(double value)

ainsi, le code suivant ne compilera pas

var intMinutes = TimeSpan.FromMinutes(varTime); // ne compilera pas

À la place, vous pouvez utiliser la propriété TimeSpan.TotalMinutes pour effectuer cet arithmétique. Par exemple :

TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue; 
double fractionalMinutes = varTime.TotalMinutes;
int wholeMinutes = (int)fractionalMinutes;

3voto

Alexander R Points 1679

Il vous suffit de interroger la propriété TotalMinutes comme ceci varTime.TotalMinutes

1voto

Malik Asif Points 573

Si la différence entre l'heure de fin et l'heure de début est supérieure ou égale à 60 minutes, l'instruction : endTime.Subtract(startTime).Minutes; retournera toujours (minutesDifference % 60). Ce qui n'est évidemment pas souhaité lorsque nous ne parlons que de minutes (pas d'heures ici).
Voici quelques façons d'obtenir le nombre total de minutes (avec des conversions de types différentes) :

// La valeur par défaut retournée est de type *double* 
double double_minutes = endTime.Subtract(startTime).TotalMinutes; 
int integer_minutes = (int)endTime.Subtract(startTime).TotalMinutes; 
long long_minutes = (long)endTime.Subtract(startTime).TotalMinutes; 
string string_minutes = (string)endTime.Subtract(startTime).TotalMinutes;

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