Letzter Tag des Monats

  • hi,

    habe da ein kleines Problem mit dem letzten des Monats. Es läuft soweit aber zur Ausgabe des 31.12 des Vorjahres kommt 00.00.Vorjahr. Woran kann es liegen?

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <String.au3>

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

    If @Mon = 1 Then
    $iDays = _DateDaysInMonth( @YEAR - 1, StringFormat("%02d", @MON -1 ) )
    $sNewDate = $iDays & "." & StringFormat("%02d", @MON -1) & "." & @YEAR -1
    MsgBox( 4096, "Then", "Datum: " & $sNewDate )
    Else
    $iDays = _DateDaysInMonth( @YEAR ,StringFormat("%02d", @MON - 1) )
    $sNewDate = $iDays & "." & StringFormat("%02d", @MON - 1 ) & "." & @YEAR
    MsgBox( 4096, "Else", "Datum: " & $sNewDate )
    EndIf

    [/autoit]

    Mfg
    Thomas

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

    • Offizieller Beitrag

    Hi,

    wolltest du sowas?

    Spoiler anzeigen
    [autoit]

    #include<Date.au3>
    Global $mon = 1
    ConsoleWrite(_getLastDayOfUltimo(@YEAR, $mon) & @CRLF)

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

    Func _getLastDayOfUltimo($year, $month)
    If $month = 1 Then
    $year -= 1
    $month = 12
    Return StringFormat('%02d' & '.' & '%02d', _DateDaysInMonth($year, $month), $month) & '.' & $year
    EndIf
    Return StringFormat('%02d' & '.' & '%02d', _DateDaysInMonth($year, $month - 1), $month - 1) & '.' & $year
    EndFunc ;==>_getLastDayOfUltimo

    [/autoit]

    So long,

    Mega

  • hi ,

    nicht ganz.was ich erreichen will ist das wenn heute (14.07.07) dann letzte Tag des Juni (30.06.07) das geht ja. was nicht funzt ist wenn heute(ein tag im januar) dann der letzte tag des dezember des vorjahres. dann gibt meine func 00.00.2006 aus. das würde ich gerne korrigieren.
    Bei deiner func wird wenn ich das richtig gesehen habe im der 31.12.2006 ausgegeben.

    mfg thomas

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

    • Offizieller Beitrag

    Hallo,

    wenn Du die Funktion von Xenobiologist so aufrufst geht's:

    [autoit]

    _getLastDayOfUltimo(@YEAR, @MON)

    [/autoit]

    Der Code sollte ja nur demonstrieren was im Januar passiert.

  • hi,

    kleine ursache große wirkung ok es geht danke euch beiden.

    thomas

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

  • Hi,
    auch wenn das Problem schon gelöst ist, poste ich trotzdem meine Lösung, da kein Anderer diesen Weg benutzt hat:

    Spoiler anzeigen
    [autoit]


    ;<AutoItScript>
    Opt("MustDeclareVars", 1) ;0=ohne, 1=erfordert Variablen-Deklaration
    #NoTrayIcon ;Ohne Icon im Tray, hängende Prozesse im ProcessViewer beenden
    #include <GUIConstants.au3>
    ;+----------------------------------------------------------------------------+
    ;| Header: Bestimmen der Übergabeparameter |
    ;| ( Alles Strings(!!!), bis auf ArgC ) |
    ;| FontAnzeigeCheck: |Il1 sind Alt-0124, Großes i, Kleines L, Eins |
    Const $Autor="Ultimo.au3 ©2007 by ytwinky, MD"; |
    ;| EMail: [email='PIII1kSystem-AutoIt3Forum@yahoo.de'][/email] |
    ;| AutoIt3-Version: aktuelle beta |
    ;| Editor: SciTE aktuelle Version, feste Schriftart |
    ;| Zweck : Schablone für den Anfang, nach Bedarf anpassen |
    ;| Tab auf 2 setzen wg. Lesbarkeit |
    ;+----------------------------------------------------------------------------+
    #include <Date.au3>
    #include <String.au3>

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

    MsgBox(0, "Ultimo", Ultimo(@Year, 1))
    Exit 0

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

    Func Ultimo($Jahr, $Monat)
    $Jahr-=$Monat=1
    $Monat-=1-12*($Monat=1)
    Return "Datum: " &_DateDaysInMonth($Jahr, StringFormat("%02d", $Monat)) &"." &StringFormat("%02d", $Monat) &"." &$Jahr
    EndFunc

    [/autoit]

    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

    2 Mal editiert, zuletzt von ytwinky (15. Juli 2007 um 10:55)