Ich habe eine Funktion gebraucht, die mir die Tage einer Kalenderwoche ausgibt, und da hier schon jemand nach etwas ähnlichem gefragt hat, hier die Funktion, vielleicht kann sie einer von euch ja auch noch gebrauchen.
Spoiler anzeigen
; #FUNCTION# ;===============================================================================
;
; Name...........: _DateWeekISOtoDate
; Description ...: Liefert die Tage der gewählten Kalenderwoche
; Syntax.........: _DateWeekISOtoDate($iKW, $iYear = @YEAR)
; Parameters ....: $iKW - Die Kalenderwoche, dessen Tage gesucht werden sollen
; $iYear - Das Jahr (Standart = Aktuelles Jahr)
; Return values .: Success - Eindimensionales Array mit den Tagen der gesuchten Woche.
; - In $Result[0] steht die Anzahl an Wochen des Jahres
; Failure - Returns 0 and Sets @Error:
; |0 - Kein Fehler
; |1 - $iKW ist keine Zahl
; |2 - $iKW ist kleiner 1 oder größer 53
; |3 - $iKW ist 53, es gibt aber nur 52 Wochen
; |4 - $iYear ist keine Zahl
; |5 - $iYear ist kein Jahr
; Author ........: TheLuBu ([email='LuBu@veytal.com'][/email])
; Modified.......:
; Remarks .......:
; Related .......:
; Link ..........;
;
; ;==========================================================================================
Func _DateWeekISOtoDate($iKW, $iYear = @YEAR)
If Not StringIsDigit($iKW) THen Return SetError(1,0,0)
If $iKW = 0 Or $iKW > 53 Then Return SetError(2,0,0)
If Not StringIsDigit($iYear) THen Return SetError(4,0,0)
If Not StringLen($iYear) = 4 THen Return SetError(5,0,0)
Local $s4thjanuary, $s1thjanuary, $idatereduce, $iMaxWeeks, $asReturndate[8]
$s4thjanuary = _DateToDayOfWeek($iYear, "01", "04")
$s1thjanuary = _DateToDayOfWeek($iYear, "01", "01")
For $i = 1 To 6
$idatereduce = $s4thjanuary - $i
If $idatereduce = 2 Then ExitLoop
Next
$sFirstDayWeekISO = _DateAdd("D", -$i, $iYear & "/01/04")
Switch $s1thjanuary
Case 5 ;Donnerstag
$iMaxWeeks = 53
Case 4 ;Mittwoch
If _DateIsLeapYear($iYear) Then
$iMaxWeeks = 53
Else
$iMaxWeeks = 52
EndIf
Case Else
$iMaxWeeks = 52
EndSwitch
If $iMaxWeeks = 52 And $iKW = 53 Then SetError(3,0,0)
$asReturndate[0] = $iMaxWeeks
For $i = 1 To 7
$asReturndate[$i] = _DateAdd("w", $iKW - 1, _DateAdd("D", $i-1, $sFirstDayWeekISO))
Next
Return $asReturndate
EndFunc ;==>_DateWeekISOtoDate