J'ai un datagridview dans mon application qui contient les heures de début et de fin. Je veux calculer le nombre de minutes entre ces deux heures. Jusqu'à présent, j'ai:
var varFinish = tsTable.Rows[intCellRow]["Finish Time"];
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue;
int intMinutes = TimeSpan.FromMinutes(varTime);
Mais la dernière ligne ne sera pas compilée car elle indique que j'utilise des arguments non valides pour le constructeur Timespan. J'ai fait pas mal de recherches sur la façon de calculer le nombre de minutes entre deux fois, mais je frappe un peu un mur de briques. Quelqu'un peut-il s'il vous plaît me conseiller sur la meilleure façon d'atteindre mon objectif.
ÉDITER/
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 je reçois un casting invalide sur la deuxième ligne. VarFinish et varValue sont des heures, par exemple 10h00 et 8h00. Vous ne savez donc pas pourquoi ils ne sont pas castés pour taper DateTime?
Réponses:
Essaye ça
DateTime startTime = varValue DateTime endTime = varTime TimeSpan span = endTime.Subtract ( startTime ); Console.WriteLine( "Time Difference (minutes): " + span.TotalMinutes );
Edit: Si vous essayez «span.Minutes», cela ne renverra que les minutes de la période [0 ~ 59], pour renvoyer la somme de toutes les minutes de cet intervalle, utilisez simplement «span.TotalMinutes».
la source
TotalMinutes()
?span.Minutes
renvoie un nombre [0..59]. Utiliser à laspan.TotalMinutes
placedouble minutes = varTime.TotalMinutes; int minutesRounded = (int)Math.Round(varTime.TotalMinutes);
TimeSpan.TotalMinutes : le nombre total de minutes représentées par cette instance.
la source
Dans votre code de question, vous n'utilisez
TimeSpan.FromMinutes
pas correctement. Veuillez consulter la documentation MSDN pour TimeSpan.FromMinutes, qui donne la signature de méthode suivante:public static TimeSpan FromMinutes(double value)
par conséquent, le code suivant ne compilera pas
var intMinutes = TimeSpan.FromMinutes(varTime); // won't compile
Au lieu de cela, vous pouvez utiliser la propriété TimeSpan.TotalMinutes pour effectuer cette arithmétique. Par exemple:
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue; double fractionalMinutes = varTime.TotalMinutes; int wholeMinutes = (int)fractionalMinutes;
la source
Il vous suffit d'interroger la
TotalMinutes
propriété comme cecivarTime.TotalMinutes
la source
Si la différence entre endTime et startTime est supérieure ou égale à 60 minutes , l'instruction:
endTime.Subtract(startTime).Minutes;
retournera toujours(minutesDifference % 60)
. Ce qui n'est évidemment pas souhaité quand on ne parle que de minutes (pas d'heures ici).Voici quelques-unes des façons si vous souhaitez obtenir
total number of minutes
(dans différentes typecasts):// Default value that is returned is of 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;
la source