Sommerzeit

  • Hi,
    passend zum heutigen Tag :D eine Funktion für das Datums-Management: Ermitteln der Sommerzeit
    _Date_GetSummerTime([$iYEAR=''])

    Edit 03.05.08:

    Habe die Funktion den Änderungen der SZ im Verlauf der Geschichte angepaßt.
    Alles weitere (auch DL) in Post #4


    - gültige Jahreszahlen 1900 bis 2999 (bei keinem Wert wird das aktuelle Jahr verwendet)
    - für Jahreszahlen in denen keine SZ war (oder außerhalb Bereich) wird ein leeres Array zurückgegeben
    - Rückgabe in einem Array; D/BRD: [0][0]=Anfang, [0][1]=Ende; sowj.Zone/DDR: [1][0]=Anfang, [1][1]=Ende
    - Datumsangabe im Kurzdatumsformat der Regioneinstellungen des PC

  • Hallo 'Gemeinde' :D


    Ich habe mich damals auch unter anderem mit der Sommerzeit beschäftigt - Großes Lob an BugFix für die Funktion, leider kann ich mich mal wieder nicht zurückhalten. Meine Interpretation der Funktion fällt so aus:


    PS: bis 1995 endete die Sommerzeit bereits im September, ab 1996 wurde das Ende auf Oktober verschoben.


    Code
    1. Func _Date_GetSummerTime02($iYEAR='')
    2. Local $aSummer[2]
    3. If ($iYEAR = '') Or ($iYEAR < 1900) Or ($iYEAR > 2999) Then $iYEAR = @YEAR
    4. $aSummer[0] = _DateTimeFormat($iYEAR & '/03/' & 31 - _DateToDayOfWeekISO ( $iYEAR,3,31) - 1,2)
    5. $aSummer[1] = _DateTimeFormat($iYEAR & '/10/' & 31 - _DateToDayOfWeekISO ( $iYEAR,10,31) - 1,2)
    6. If $iYEAR < 1996 Then
    7. $aSummer[1] = _DateTimeFormat($iYEAR & '/09/' & 30 - _DateToDayOfWeekISO ( $iYEAR,9,30) - 1,2)
    8. EndIf
    9. Return $aSummer
    10. EndFunc


    Gruß
    Trallala

    Ein Tag voller Sorgen dauert länger als ein Monat Freude

    Einmal editiert, zuletzt von trallala ()

  • Also, wenn schon meckern, dann bitte gründlich. :D
    Denn die Sommerzeit gab es auch erst ab 1916, wurde 1919 wieder abgeschafft und von 1940-1949 erneut probiert und seit 1980 sind wir endgültig mit diesem Schwachsinn (auch ökonomisch) gesegnet. :wacko:
    Ich hab die Funktion jetzt so angepaßt, dass dies alles berücksichtigt wird.
    Einige Besonderheiten möchte ich mal am Rande erwähnen:
    - die Sommerzeit des Jahres 1940 endete erst 1942 !!
    - 1945 war die SZ im Osten zweiteilig, 2h von Mai-Sep. und 1h bis Nov.
    - 1947 für ganz DE dreiteilig: April/Mai 1h, Mai/Juni 2h, Juni-Okt 1h


    Für Österreich und Schweiz gelten wiederrum andere Zeiten. Das habe ich jedoch außen vor gelassen.


    Edit: Da hatte ich doch glatt übersehen, dass für 1980-1995 bei der Septemberberechnung ab 24. auf So. geprüft werden muß. Ist gefixt.


    Hier also die korrigierte Fassung:

  • BugFix . Also, wenn schon meckern, dann bitte gründlich: :D


    Okay ! ! !


    Ihr diskutiert noch über Sommerzeit und Winterzeit ???


    Hallo ???


    Bald schon ist Bikini-Zeit ! :D:rofl::D


    Crazy-A

    ...... Lieben Gruß, ........
    ...........
    Alina ............

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Ich habe die Deutsche Hilfe auf meinem PC und
    OrganizeIncludes ist beim Scripten mein bester
    Freund. Okay?

  • Hi Bugfix,



    vorneweg vielen Dank für die Funktion.



    Aber kannst Du mir erklären, warum ich bei der _DateToDayOfWeekISO nach 7 (i.W. sieben) suchen lassen muss. Laut HIlfe ist die 6 der Sonntag. Bei mir errechnet aber Dein Programm notorisch die letzten Samstage und nicht die letzten Sonntage. Erst wenn ich auf 7 umstelle klappt es. Liegt das an irgendwelchen Systemeinstellungen, die ich in den vergangenen zehn Jahren mal verbogen habe (Ja, ich benutze noch XP). Oder wurde die Funktion verändert, nur die Hilfe nicht?



    MadTax

  • Liegt vermutlich daran, dass die Funktion in der AutoIt Version 3.3.6.0 (7.3.2010) geändert wurde. Laut History:
    "Fixed #1487: _DateToDayOfWeekIso returned 0-6 but should be 1-7 where Monday = 1"

  • Also in der engl. Hilfe stimmt es.
    Und für die deutsche Hilfe gibt es hier einen Thread. Vielleicht postest Du das Problem dort.