Datumsberechnungen mit dem TYP DATE



  • Hi@all,
    ich habe folgendes Problem ich habe ein altes Programm übernommen, und muss dort nun eine Änderung vornehmen. Der der das Programm geschrieben hat hat mit dem Typ DATE gearbeitet. Jetzt möchte ich herausfinden ob der Tag des DATE Wertes >= 1 oder <= 30/31/28 ist und dafür brauche ich zusätzlich den Monat aus dem Gleitkommawert.
    Kurz erläutert: Es wird ein Rhytmus für Auftragsausführungen berechnet. Momentan läuft es so dass ein vierwöchiger Rhytmus mit 28 tagen berechnet wurde. Der Nutzer möchte aber das VierWöchig bedeutet monatlich. Nun kann ein Wochentag(z.B. Mittwoch) ausgewählt werden. Dann soll immer wenn ich z.B. den Auftrag am 02.01.08 starte im Folgemonat auf den Mittwoch einen Monat später gesetzt werden. Wenn ich mit 28 Tagen rechne ist der gewünschte Mittwoch der 30.01 soll aber nach Wunsch der 06.02 sein. Würde ich jetzt am 09.01.08 starten muss der nächste Auftrag dementsprechend auf den 13.02 gesetzt werden.

    Hoffe ihr versteht wie ich das meine.

    Gruß

    CrazyPlaya


  • Mod

    Dann verwende COleDateTime mit seinen Get Funktionen.

    COleDateTime kann direkt durch ein DATE initialisiert werden.

    Oder Du verwendest direkt VariantTimeToSystemTime



  • Wird zwar ein wenig rumrechnerei aber ich werde es mal versuchen. Der DATE Typ wird in anderen Funktionen weiterverarbeitet und daran rum basteln möchte ich weniger.


  • Mod

    Was meinst Du mit rumbasteln.

    COleDateTime(deinDATEWERT).GetDay()
    

    liefert Dir den Tag.

    Auf Dein DATE einfach 28 aufaddieren und dann bis zum nächsten Tag rechnen, der Dir passt...

    Zudem gibt es auch COleDateTimeSpan, mit dem Du das rechnen erleichtern kannst.



  • Ich muss es halt wieder zurück ins DATE bekommen deswegen Bastelei. Und einfach DATE = OleDate scheint nicht zu funktionieren.



  • CrazyPlaya schrieb:

    Und einfach DATE = OleDate scheint nicht zu funktionieren.

    Wieso nicht? COleDateTime hat doch einen "operator DATE" für genau diese Umwandlung definiert. Natürlich kannst du einem Typ nichts zuweisen, aber DATE ziel = OleDate; sollte doch funktionieren.



  • Ok hast gewonnen mit operator DATE gehts:) Besten Dank für die Hilfe.


Anmelden zum Antworten