Datum berechnen

  • 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.

    Einmal editiert, zuletzt von Molaynox (18. März 2011 um 15:11)

  • Ich hatte gerade Lust darauf:

    [autoit]

    #Include <Date.au3>
    $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
    Wend

    [/autoit]

    Edit: Bessere Variante !
    Edit2: Nochmal erweitert !
    Edit3: Andere Variante (es werden nur die Freitage geprüft, was etwas schnelle sein sollte)

    [autoit]

    #Include <Date.au3>
    $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

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    4 Mal editiert, zuletzt von Micha_he (18. März 2011 um 15:44)

  • Habs auch grad selbst hinbekommen mit Berechnung für die nächsten 64 Jahre :D trotzdem Danke.

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Dim $aDays[1]

    [/autoit] [autoit][/autoit] [autoit]

    For $iYear = @YEAR To @YEAR + 64
    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

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($aDays)

    [/autoit]