Wie mit DateSerial zum Zieldatum kommen?

  • VBScript

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Wie mit DateSerial zum Zieldatum kommen?

    Hallo Community,

    Ich bin neu hier und hab eine Frage -
    Ich verstehe es leider nicht so genau...die Funktion ist klar.

    DateSerial(Year(Date()), month(Date()) + 1, 0)

    Ausgabe ist hier immer der letzte Tag des aktuellen Monats. Wie kann ich durch hinzufügen einer Datenquelle XYZ die Monate neu berechnen? Wichtig ist hierbei dass das Datum immer auf dem letzten Tag des Monats bleibt!

    Beispiel Ausgabe ist heute 30.04.2022 + 6 oder 12 Monate = z.B. 30.10.2022

    Wie würde das in diesem String aussehen?

    Danke für eure Hilfe
    Nicci

    nicci schrieb:

    + 6 oder 12 Monate
    Mach halt month(Date()) + 7 oder month(Date()) + 13
    DateSerial ist da sehr flexibel.
    Ansonsten gibt's auch noch eine DateAdd-Funktion

    Visual Basic-Quellcode

    1. Datum = DateAdd("m",6,Date)
    2. Ultimo = DateSerial(Year(Datum),Month(Datum)+1, 0)

    oder ganz sauber und stückckchenweise ohne die undokumentierten Features von DateSerial zu nutzen:

    Visual Basic-Quellcode

    1. Datum = DateAdd("m",6,Date)
    2. NextFirst = DateSerial(Year(Datum), Month(Datum)+1, 1)
    3. Ultimo = DateAdd("d", -1, NextFirst)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „petaod“ ()

    Hello,
    danke für die schnelle Rückmeldung.

    DateSerial(Year(Date()), month(Date()) + 1, 0)
    Wie kann ich hier [daten] einbinden.
    Wobei [daten] die variablen Daten bildet - z.B. je nach Produkt entschieden werden soll ob eben 6 oder 12 oder 3 Monate hinzu addiert werden.
    Das kommt aber aus einer anderen Quelle. Jedenfalls kommen hier die Werte 3,6,12 als Monate zu Tragen wodurch sich dann das Datum ändern soll.


    Sry für die dummen Fragen hier...

    Danke für die Hilfe
    VG, nicci

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nicci“ ()

    nicci schrieb:

    Sry für die dummen Fragen hier...
    Dumm sind die Fragen nicht unbedingt, sondern sehr unvollständig gestellt.
    Wenn du eine Variable Daten hast, dann trag sie als Funktionsparameter ein.
    Solange du nicht beschreibst, was die Daten enthält, kann dir einfach keiner helfen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Gegenfrage: Was ist 31.01.2022 plus einen Monat?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ok, damit würde natürlich alles zwischen dem 28. und 31.01. zu diesem Datum führen. Ist nur die Frage, ob das dem TE auch bewusst ist und ob er das so will.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo zusammen,

    erstmal danke für eure Antworten.
    Aktuell ist es so - es geht um eine Etikettenprogrammierung
    Ich verwende ein Programm in dem es auch möglich ist VBS und eben Datenquellen einzubinden.
    Meine Herausforderung besteht darin ein MHD Feld zu erzeugen - welches mir egal welcher Produktionstag eben ist das MHD zum Monatsende zzgl. der Monate welche aus einer Datenquelle [mhd_offset] des Kunden entspringen. MHD OFFSET Ist eine Funktion die aus dem Programm heraus immer den Wert 3, 6 oder eben 12 liefert und für die Monate zur Kalkulation des tatsächlichen MHDs beiträgt, das ist variabel je nach dem welches Produkt ausgewählt wird.
    Nach eigener Recherche war eben der Weg mit DateSerial mein Ansatz um erstmal zum Monatsende vorzurechnen und dann hinterher die Datenquelle mit entweder mit einzubinden.
    Ich dachte erst ich mache es so -

    DateSerial(Year(Date()), month(Date()) + [mhd_Offset], 0)

    ausgegangen vom heutigen Datum 04.05.2022 + 6 Monate MHD hätte ich als Ergebnis 31.11.2022 erwartet.

    Aber das ausgegebene Ergebnis ist nicht richtig.

    Würde das überhaupt so funktionieren?

    Vielen Dank für eure Hilfe...

    VG, nicci

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nicci“ ()

    nicci schrieb:



    DateSerial(Year(Date()), month(Date()) + [mhd_Offset], 0)

    ausgegangen vom heutigen Datum 04.05.2022 + 6 Monate MHD hätte ich als Ergebnis 31.11.2022 erwartet.

    i


    ich glaube du hast einen Denkfehler (oder ich) mit + 6 Monate

    zähle ...
    01.05.2022 <---- start Berechnung in dem Monat
    01.06.2022
    01.07.2022
    01.08.2022
    01.09.2022
    01.10.2022
    01.11.2022 <---- ende Berechnung in dem Monat

    ergibt bei mir 7 Monate für die Berechnung
    Sollte doch einfach sein: heutiges Datum -> x Monate draufhauen und noch einer zusätzlich und dann der letzte Tag des Vormonats.

    Visual Basic-Quellcode

    1. ExpiringDate = DateSerial(Year(Date()), Month(Date()) + DeinMonatsoffset + 1, 0)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.