Beginn der Sommerzeit in NodaTime

8

Wie kann ich die Anfangs- und Enddaten für die Sommerzeit mit Noda Time abrufen? Die unten stehende Funktion erfüllt diese Aufgabe, ist aber furchtbar unhandlich und bittet um eine einfachere Lösung.

%Vor%     
Matt Kline 23.06.2014, 19:16
quelle

1 Antwort

6

Es gibt keine einzige eingebaute Funktion, die mir bekannt ist, aber die Daten sind alle da, also können Sie sicherlich Ihre eigenen erstellen.

Sie sind auf dem richtigen Weg mit dem, was Sie gezeigt haben, aber es gibt ein paar Dinge zu beachten:

  • Normalerweise interessieren sich die Leute für die Ende Punkte der Intervalle. Wenn Sie nur das mittlere Intervall starten und stoppen, erhalten Sie wahrscheinlich andere Werte als erwartet. Wenn Sie beispielsweise eine der US-Zeitzonen verwenden, z. B. "America/Los_Angeles" , gibt Ihre Funktion die Übergänge als 3/9/2014 3:00:00 AM und 11/2/2014 2:00:00 AM zurück, wobei Sie für beide wahrscheinlich 2:00 AM erwarten.

  • Zeitzonen südlich des Äquators, die die Sommerzeit nutzen, beginnen gegen Ende des Jahres und enden gegen Anfang des nächsten Jahres. Manchmal sind die Elemente im Tupel möglicherweise umgekehrt als erwartet.

  • Es gibt ziemlich viele Zeitzonen, in denen keine Sommerzeit verwendet wird. Daher ist das Auslösen einer Ausnahme nicht die beste Idee.

  • Es gibt mindestens zwei Zeitzonen, die derzeit vier Übergänge in einem einzigen Jahr haben ( "Africa/Casablanca" und "Africa/Cairo" ) - mit einem "Bruch" "In ihren DST-Zeiten für Ramadan. Und gelegentlich gibt es nicht-DST-bezogene Übergänge, zum Beispiel wenn Samoa seinen Standard-Offset im Jahr 2011 geändert hat , wodurch es innerhalb eines Jahres drei Übergänge gab.

Unter Berücksichtigung all dessen wäre es besser, eine Liste einzelner Übergangspunkte anstelle eines Tupels von Übergangspaaren zurückzugeben.

Auch das ist geringfügig, aber es wäre besser, die Methode überhaupt nicht an die Systemuhr zu binden. Das Jahr kann einfach durch Parameter übergeben werden. Dann können Sie diese Methode bei Bedarf für nicht aktuelle Jahre verwenden.

%Vor%

Beachten Sie auch, dass es am Ende wichtig ist, nur die Werte des aktuellen Jahres zu filtern, da sich die Intervalle sehr wohl auf das Folgejahr erstrecken oder unbegrenzt weiterlaufen können.

    
Matt Johnson 24.06.2014, 05:05
quelle

Tags und Links