240 Stimmen

Anzeige der Differenz zwischen zwei Datumswerten in Stunden

Ich rufe zwei Datums- und Zeitwerte aus der Datenbank ab. Sobald der Wert abgerufen ist, benötige ich die Differenz zwischen den beiden Werten. Zu diesem Zweck erstelle ich eine Zeitspannenvariable, um die Differenz der beiden Datumswerte zu speichern.

TimeSpan? variable = datevalue1 - datevalue2;

Nun muss ich die Differenz, die in der Variablen "Zeitspanne" gespeichert ist, in Form der Anzahl der Stunden darstellen. Ich bezog mich auf TimeSpan.TotalHours konnte aber aus irgendeinem Grund nicht dasselbe anwenden. Wie kann ich das tun? Ich verwende C# für ein MVC-Projekt. Ich muss einfach die Differenz Wert in Stunden zeigen?

EDIT: Da die Zeitspanne nullbar war, konnte ich die Eigenschaft Gesamtstunden nicht verwenden. Jetzt kann ich es verwenden, indem ich TimeSpanVal.Value.TotalHours ;

4voto

smurtagh Punkte 1157

eine präzisere Art und Weise für die bezahlten Stunden der Mitarbeiter oder andere Präzisionsanforderungen: :

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

2voto

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)

kann auch die Differenz zwischen den Daten hinzufügen, wenn wir zwei verschiedene Daten vergleichen

new TimeSpan(24 * days, 0, 0)

0voto

Rusty Nail Punkte 2685

WOW, ich muss sagen: Keep it simple:

MessageBox.Show("Result: " + (DateTime.Now.AddDays(10) > DateTime.Now));

Result: True

und:

MessageBox.Show("Result: " + DateTime.Now.AddDays(10).Subtract(DateTime.Now));

Result: 10.00:00:00

Das DateTime-Objekt verfügt über die gesamte eingebaute Logik zur Behandlung des booleschen Ergebnisses.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X