Forums Neueste Beiträge
 

Zeiträume vergleichen

09/09/2008 - 19:15 von Klaus Meier | Report spam
Hallo zusammen,

wie macht ihr das?

Ich habe 2 Zeitràume: z.B.
12:30 Uhr bis 16:30 Uhr
und 10:00 Uhr bis 13:00 Uhr

Ich brauche jetzt den Zeitraum bei denen sich beide überlappen; also 12:30
Uhr bis 13:00

Das ganz muss auch über Mitternacht funktionieren:

z.B. 22.00 Uhr bis 0:00 Uhr
und 23:00 Uhr bis 2:00 Uhr

muss ergeben 23:00 Uhr bis 0.00 Uhr

Wie macht man das am elegantesten - ganz egal ob Date,TimeSpan oder
Integervariablen die beste Lösung erbringen.

Danke!
 

Lesen sie die antworten

#1 Thomas Scheidegger
09/09/2008 - 22:30 | Warnen spam
Hallo Klaus

Ich habe 2 Zeitràume: z.B.
12:30 Uhr bis 16:30 Uhr
und 10:00 Uhr bis 13:00 Uhr
Ich brauche jetzt den Zeitraum bei denen sich beide überlappen




Die 4 Zeitpunkte als 'DateTime'
(ggf halt in UTC-Zeit falls Sommerzeitumschaltung Problem!)

Zeitraum A : DateTime beginA ... DateTime endA
Zeitraum B : DateTime beginB ... DateTime endB
Überlappung X : DateTime beginX ... DateTime endX

Dann Vergleiche/Berechnung über DateTime.Ticks (64-Bit!)
und Pseudo-Code [Irrtum vorbehalten]:

'
if ( beginA.Ticks >= endA.Ticks ) Or ( beginB.Ticks >= endB.Ticks )
then illegal_argument

if ( beginB.Ticks >= endA.Ticks ) Or ( beginA.Ticks >= endB.Ticks )
then no_overlap

beginX = New DateTime( Math.Max( beginA.Ticks, beginB.Ticks ))
endX = New DateTime( Math.Min( endA.Ticks, endB.Ticks ))
'


Die Zeitràume können so beliebig lang sein, also ggf Jahre.
Schaltjahre sind da wohl berücksichtigt,
aber nicht die IERS-Schaltsekunden ;-)




Thomas Scheidegger - 'NETMaster'
http://dnetmaster.net/

Ähnliche fragen