COleDateTime + 12 Monate



  • Hallo @all,

    ich habe eine COleDateTime-Struktur.
    Nun möchte ich eine neue Struktur erzeugen die genau das Startdatum + 12 Monate weiter enthält (es muss also ein Jahresübergang stattfinden etc.).

    Mein Versuch:

    COleDateTime objCOleTimeStartDatum;
    // zuweisen etc. ...
    COleDateTime objCOleTimeEndDatum = objCOleTimeStartDatum + COleDateTimeSpan(0, 0, 12, 0);
    

    Leider funktioniert das nicht wie gewünscht.

    Wie kann ich das Problem lösen? 😕



  • Der Konstruktor von COleDateTimeSpan ist

    COleDateTimeSpan( LONG lDays, int nHours, int nMins, int nSecs)
    

    würde also nach deinem Aufruf 12 Minuten der Startzeit hinzuaddieren. Du willst aber 12 Monate haben, also 356 Tage hinzuaddieren.

    COleDateTime objCOleTimeEndDatum = objCOleTimeStartDatum + COleDateTimeSpan(365, 0, 0, 0);
    

    So sollte es laufen.

    Gruß Matthias



  • Hi Matthias,

    danke für deine Hilfe.
    Gibt es auch Konstrukt was die Schaltjahre mit beachtet (366 Tage)? 😕

    Wie würdet ihr rangehen, wenn ihr immer das Datum zum 01. des nächsten Monats haben möchtet?

    Ich wollte das so lösen, dass ich das neue Datum einfach so wie das Alte formatiere, aber den Tag auf den 01. setze und vom alten Monat mit der Funktion .GetMonth()+1. Hier hab ich aber wieder ein Problem beim Jahreswechsel, ich müsste gesondert beachten, wenn ich mich im Dezember befinde und dann noch zusätzlich das Jahr inkrementieren.
    Gibt es da auch eine geschicktere Lösung? Aktuelles Datum + 31 Tage und dann auf den 01. formatieren funktioniert nicht, falls man sich im 28. Februar befindet, da dann ein Monat übersprungen wird. 😕



  • Kurze Verständnisfrage:
    Du hast: 16.07.07
    Du willst: 16.07.08 ?
    Oder was? 😕

    Dann müsstest du doch einfach nur das Jahr hochzählen.



  • Hey estartu,

    ich war schon auf dem Edit-Button 😉
    Das mit dem Jahr stellt in der Form wie du schon sagst kein Problem dar. Einfach .GetYear+1

    Das mit dem Monat löse ich nun so, dass ich .GetMonth+1 nutze, außer wenn der aktuelle Monat der Dezember ist, dann wird der Monat auf 1 gesetzt und das Jahr inkrementiert.


Anmelden zum Antworten