2009-05-05 9 views
1

Mit C# (das .NET Framework), bin ich durch alle TimeZones und ihre AdjustmentRules ... und für "Mauritius Standard Time" {(GMT + 04: 00) Port Louis)} - die Anpassungsregel ist wie folgt:Kann jemand erklären, wie eine DaylightSavingsRule eine "StartMonth" haben kann, nachdem sie "EndMonth" ist?

IsFixed = false; 
DaylightTransitionStart.Month = 10; 
DaylightTransitionEnd.Month = 1; 

Von dem, was ich verstehe, ‚IsFixed false =‘ bedeutet, dass ich nicht verwenden, um die „Startdate“ und „EndDate“ -Felder tun ... sondern ich brauche die DaylightTransitionStart und End verwenden dynamisch bestimmen, ob die Zeit in der Sommerzeit ist oder nicht.

Das Problem hierbei ist, dass für etwa 30 Übergangsregeln, die "StartMonth" nach dem "EndMonth" ist

Wie kann DaylightSavingsTime in 'Oktober 2008' und am Ende in 'Januar 2008' beginnen ?

Bitte helfen Sie mir, dies zu verstehen ... sobald ich über diese Hürde komme, sollte ich eine vollständige "jede Zeit in und aus UTC mit einer beliebigen Zeitzone für alle Geschichte konvertieren" SQL-Funktion geschrieben haben.

Antwort

5

Eine Zeitperiode endet nicht logisch kann, bevor es beginnt, aber vielleicht vorausgesetzt, Sie, dass diese Monate Monate desselben Jahres beziehen, wenn in der Tat Oktober 2008 sein könnte, aber JAN ist im Jahr 2009

Denken davon als zirkulär verknüpfte Liste.

Die Klasse DaylightTime verwendet eine DateTime sowohl für den Beginn als auch das Ende der Sommerzeit, daher geben beide ein Jahr an.

+0

Das habe ich mir auch gedacht, aber ich hoffe, dass jemand eine definitive Antwort hat. –

+0

Obwohl eine Menge Leute diese Art von Antwort gegeben haben ... hat diese das "definitive" Gefühl - also gewinnst du! Danke für die Eingabe. –

4

Wäre das nicht für Länder südlich des Äquators der Fall?

+0

In der Tat würde es. – Richard

1

Zwei verschiedene Jahre. z.B. Anfang Jahr 09 Ende Jahr 10

2

in der südlichen Hemisphäre sein könnte, beginnt DST im Oktober und endet in einigen Teilen Australiens

3

Theres dieses Ding namens die südliche Hemisphäre im März. Vielleicht hast du davon gehört.

In Australien beginnt die Sommerzeit um den Oktober und endet um den März (in den Staaten, die es haben).

+1

Südliche Hemisphäre ... ist das möglicherweise ... unter der nördlichen Hemisphäre? - BTW, die Frage ist eine technische ... wie kann ich (in Code) den wahren "Start" und "Ende" bestimmen. –

+1

Und das ist der technische Grund: Wenn Sie Sommerzeitumstellung nur als eine Zahl für Monat modellieren, dann beginnen Sie 10, Ende 3 ist die Weise, es zu tun, und es ist kein großer Sprung zum Jahr, anstatt vorher zu ticken . – cletus

+1

@Timothy Technisch ist die südliche Hemisphäre nicht unterhalb der nördlichen Hemisphäre, es ist nur, dass es konventionell so dargestellt wird. –