Je récupère deux valeurs de date et d'heure de la base de données. Une fois la valeur récupérée, j'ai besoin de la différence entre les deux valeurs. Pour cela, je crée une variable de durée pour stocker la différence des 2 valeurs de date.
TimeSpan? variable = datevalue1 - datevalue2;
Maintenant, je dois montrer la différence qui est stockée dans la variable Timespan en termes de nombre d'heures. J'ai fait référence à TimeSpan.TotalHours mais je n'ai pas pu appliquer la même chose pour une raison quelconque. Comment je fais ça? J'utilise C # sur un projet MVC. J'ai simplement besoin d'afficher la valeur de la différence en heures?
EDIT: Puisque la durée était nullable, je ne pouvais pas utiliser la propriété total des heures. Maintenant, je peux l'utiliser en faisant TimeSpanVal.Value.TotalHours ;
la source
TimeSpan.TotalHours
?.Value.TotalHours
Réponses:
Je pense que vous êtes confus parce que vous n'avez pas déclaré un
TimeSpan
vous avez déclaré unTimeSpan?
qui est nullableTimeSpan
. Supprimez le point d'interrogation si vous n'en avez pas besoin pour qu'il soit nullable ou utilisezvariable.Value.TotalHours
.la source
vous voudrez peut-être aussi regarder
var hours = (datevalue1 - datevalue2).TotalHours;
la source
Dans l'exemple, nous créons deux objets datetime, l'un avec l'heure actuelle et l'autre avec 75 secondes ajoutées à l'heure actuelle. Ensuite, nous appellerons la méthode .Subtract () sur le deuxième objet DateTime. Cela renverra un objet TimeSpan. Une fois que nous obtenons l'objet TimeSpan, nous pouvons utiliser les propriétés de TimeSpan pour obtenir les heures, minutes et secondes réelles.
DateTime startTime = DateTime.Now; DateTime endTime = DateTime.Now.AddSeconds( 75 ); TimeSpan span = endTime.Subtract ( startTime ); Console.WriteLine( "Time Difference (seconds): " + span.Seconds ); Console.WriteLine( "Time Difference (minutes): " + span.Minutes ); Console.WriteLine( "Time Difference (hours): " + span.Hours ); Console.WriteLine( "Time Difference (days): " + span.Days );
Résultat:
Time Difference (seconds): 15 Time Difference (minutes): 1 Time Difference (hours): 0 Time Difference (days): 0
la source
TotalSeconds
,TotalMinutes
etcY a-t-il une raison pour laquelle vous utilisez
Nullable
?Si vous souhaitez utiliser,
Nullable
vous pouvez écrirevariable.Value.TotalHours
.Ou vous pouvez simplement écrire:
(datevalue1 - datevalue2).TotalHours
.la source
DateTime?
DateTime
. Dans .NET,DateTime - DateTime = TimeSpan
.Nullable<DateTime>
et donc vous obtenez unNullable<TimeSpan>
.Voici un autre exemple de soustraction de deux dates en C # ...
if ( DateTime.Now.Subtract(Convert.ToDateTime(objDateValueFromDatabase.CreatedOn)).TotalHours > 24 ) { ... }
la source
un moyen plus précis pour les heures rémunérées par les employés ou toute autre exigence de précision ::
decimal DeterminePreciseHours(DateTime startTimestamp, DateTime stopTimestamp) { var span = (stopTimestamp - startTimestamp).Value; decimal total = (decimal)span.TotalMilliseconds / 60 / 60 / 1000; return Math.Round(total, PRECISION_CONSTANT); }
https://dotnetfiddle.net/tVIoVJ
la source
var startTime = new TimeSpan(6, 0, 0); // 6:00 AM var endTime = new TimeSpan(5, 30, 0); // 5:30 AM var hours24 = new TimeSpan(24, 0, 0); var difference = endTime.Subtract(startTime); // (-00:30:00) difference = (difference.Duration() != difference) ? hours24.Subtract(difference.Duration()) : difference; // (23:30:00)
peut également ajouter une différence entre les dates si nous comparons deux dates différentes
new TimeSpan(24 * days, 0, 0)
la source
WOW, je dois dire: restez simple:
MessageBox.Show("Result: " + (DateTime.Now.AddDays(10) > DateTime.Now)); Result: True
et:
MessageBox.Show("Result: " + DateTime.Now.AddDays(10).Subtract(DateTime.Now)); Result: 10.00:00:00
L'objet DateTime a toute la logique intégrée pour gérer le résultat booléen.
la source