hallo zusammen,
ich muss die absolute Anzahl von Sekunden einer Zeitspanne erhalten.
TimeSpan result = dtList[dtList.Count-1] - dtList[0];
result = result.Duration();
result = result.TotalSeconds;
geht das zwar, aber da ich nur die Zeit ohne Datum bekomme, habe ich bei Zeiten wie z.B.
[21:42:06] - [01:10:07] das Problem, dass ich den Tagesüberlauf nicht mit bekomme und anstatt (ca) 3h eben 20h berechnet werden.
Wie kann ich das am besten lösen?
Danke für Hilfe / Ratschläge
Musst Dir selbst basteln. Ohne Datumsangabe kann das TimeSpan nicht per default.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Timespan sollja auch nie einen Zeitpunkt, sondern immer nur eine Zeitspanne darstellen. Warum nutzt du nicht DateTime und ziehst die voneinander ab?
cSharp Projekte : https://github.com/jogibear9988
Da kommt am Ende auch nur eine Zeitspanne raus; aber auch hier würde ein Date benötigt werden.
Oder man nimmt eben DateTime.Parse, was dann das aktuelle Datum nehmen würde, was ihm ebenfalls nicht hilft.
Ergo: basteln.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Vielleicht hilft das?
public static class TimeSpanTools
{
public static TimeSpan ExactDuration(TimeSpan from, TimeSpan to)
{
var diff = to.Subtract(from);
if (diff.TotalMilliseconds < 0)
{
return new TimeSpan(1,0,0,0).Subtract(diff.Duration());
}
return diff;
}
}
Die Antwort ist in deiner Frage enthalten:
dass ich den Tagesüberlauf nicht mit bekomme und anstatt (ca) 3h eben 20h berechnet werden
Klar kriegst du den mit: wenn der Abstand größer als ein halber Tag ist, dann ist der Abstand mit "Tagesüberlauf" geringer und das gewünschte Ergebnis.
Zieh die beiden voneinander ab, wenn das Ergebnis > 12 ist, ziehst du noch einmal 24 ab.
var diff = (first.TimeOfDay - second.TimeOfDay).TotalHours;
var result = 3600 * (diff > 12 ? 24-diff : diff);
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)