Hi,
Wie kann ich berechnen wann z.B. Freitag der 13. das nächste Mal vorkommt?
Ich hab schon in der Date.au3 nach irgendeiner Funktion gesucht die mich weiterbringt, habe aber leider nichts gefunden.
Und Google hilft mir leider auch nicht weiter.
Datum berechnen
-
- [ gelöst ]
-
Molaynox -
18. März 2011 um 14:46 -
Geschlossen -
Erledigt
-
-
Ich hatte gerade Lust darauf:
[autoit]#Include <Date.au3>
[/autoit]
$iYear = @Year
$iMonth = @Mon
If @MDay > 13 Then $iMonth += 1
While 1
If _DateToDayOfWeek($iYear, $iMonth, 13) = 6 Then
Msgbox(0,"","Der nächsten 'Freitag der 13.' ist : 13." & $iMonth & "." & $iYear)
Exit
EndIf
$iMonth += 1
If $iMonth = 13 Then
$iMonth = 1
$iYear += 1
EndIf
WendEdit: Bessere Variante !
[autoit]
Edit2: Nochmal erweitert !
Edit3: Andere Variante (es werden nur die Freitage geprüft, was etwas schnelle sein sollte)#Include <Date.au3>
[/autoit]
$add = 6 - @WDay
If $add = -1 Then $add = 6
$nextDate = _DateAdd("D", $add, _NowCalcDate())
While 1
If StringMid($nextDate, StringInStr($nextDate, "/", 1, -1) + 1) = "13" Then
Msgbox(0,"","Der nächsten 'Freitag der 13.' ist : " & _DateTimeFormat($nextDate, 2))
Exit
EndIf
$nextDate = _DateAdd("D", 7, $nextDate)
Wend -
Habs auch grad selbst hinbekommen mit Berechnung für die nächsten 64 Jahre trotzdem Danke.
Spoiler anzeigen
[autoit]#include <Date.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>Dim $aDays[1]
[/autoit] [autoit][/autoit] [autoit]For $iYear = @YEAR To @YEAR + 64
[/autoit] [autoit][/autoit] [autoit]
For $iMonth = 1 To 12
For $iDay = 1 To 31
$iWeekDay = _DateToDayOfWeek($iYear, $iMonth, $iDay)
If $iWeekDay = 5 And $iDay = 13 Then
_ArrayAdd($aDays, $iDay & "." & $iMonth & "." & $iYear)
EndIf
Next
Next
Next_ArrayDisplay($aDays)
[/autoit]