;================================================================================================== ; Function Name: _Date_GetSummerTime([$iYEAR='']) ; Description:: Ermittlung Beginn und Ende der Sommerzeit ; Parameter(s): $iYEAR Jahr zwischen 1916 und 2999 (keine SZ von 1919-1939; 1950-1979) ; wird kein Wert übergeben, wird das aktuelle Jahr verwendet. ; Wird ein Wert außeralb des Bereiches übergeben oder war in dem Jahr ; keine SZ, so wird ein leeres Array zurückgegeben ; Return Value(s): Array[0][0] Datum Beginn (Kurzdatumsformat lt. Regioneinstellung PC) ; in Deutschland / BRD ; Array[0][1] Datum Ende (Kurzdatumsformat lt. Regioneinstellung PC) ; in Deutschland / BRD ; Array[1][0] Datum Beginn (Kurzdatumsformat lt. Regioneinstellung PC) ; in Berlin u. sowjetisch besetzter Zone / DDR ; Array[1][1] Datum Ende (Kurzdatumsformat lt. Regioneinstellung PC) ; in Berlin u. sowjetisch besetzter Zone / DDR ; Author(s): BugFix (bugfix@autoit.de) ;================================================================================================== #Include Func _Date_GetSummerTime($iYEAR='') Local $i, $aSummer[2][2] Local $aTime[14][5] = [ _ ; Jahr, Anfang D/BRD, Ende D/BRD, Anfang Ostzone/DDR, Ende Ostzone/DDR [1916,'1916/04/30','1916/10/01','',''], _ [1917,'1917/04/16','1917/09/17','',''], _ [1918,'1918/04/15','1918/09/16','',''], _ [1940,'1940/04/01','1940/12/31','',''], _ [1941,'1941/01/01','1941/12/31','',''], _ [1942,'1942/01/01','1942/11/02','',''], _ [1943,'1943/03/29','1943/10/04','',''], _ [1944,'1944/04/03','1944/09/16','',''], _ [1945,'1945/04/02','1945/09/16','1945/05/24','1945/11/18'], _ [1946,'1946/04/14','1946/10/07','1946/04/14','1946/10/07'], _ [1947,'1947/04/06','1947/10/05','1947/04/06','1947/10/05'], _ [1948,'1948/04/18','1948/10/03','1948/04/18','1948/10/03'], _ [1949,'1949/04/10','1949/10/02','1949/04/10','1949/10/02'], _ [1980,'1980/04/06','1980/09/28','1980/04/06','1980/09/28']] If ($iYEAR = '') Then $iYEAR = @YEAR If ($iYEAR < 1916) Or ($iYEAR > 1918 And $iYEAR < 1945) Or _ ($iYEAR > 1949 And $iYEAR < 1980) Or ($iYEAR > 2999) Then Return $aSummer Switch $iYEAR Case 1916 To 1980 For $i = 0 To UBound($aTime) -1 If $aTime[$i][0] = $iYEAR Then ExitLoop Next $aSummer[0][0] = _DateTimeFormat($aTime[$i][1], 2) $aSummer[0][1] = _DateTimeFormat($aTime[$i][2], 2) $aSummer[1][0] = _DateTimeFormat($aTime[$i][3], 2) $aSummer[1][1] = _DateTimeFormat($aTime[$i][4], 2) Case 1981 To 1995 For $i = 25 To 31 If _DateToDayOfWeekISO($iYEAR, 3, $i) = 6 Then $aSummer[0][0] = _DateTimeFormat($iYEAR & '/03/' & $i, 2) $aSummer[1][0] = $aSummer[0][0] EndIf Next For $i = 24 To 30 If _DateToDayOfWeekISO($iYEAR, 9, $i) = 6 Then $aSummer[0][1] = _DateTimeFormat($iYEAR & '/09/' & $i, 2) $aSummer[1][1] = $aSummer[0][1] EndIf Next Case Else For $i = 25 To 31 If _DateToDayOfWeekISO($iYEAR, 3, $i) = 6 Then $aSummer[0][0] = _DateTimeFormat($iYEAR & '/03/' & $i, 2) $aSummer[1][0] = $aSummer[0][0] EndIf If _DateToDayOfWeekISO($iYEAR,10, $i) = 6 Then $aSummer[0][1] = _DateTimeFormat($iYEAR & '/10/' & $i, 2) $aSummer[1][1] = $aSummer[0][1] EndIf Next EndSwitch Return $aSummer EndFunc ;==>_Date_GetSummerTime