Datum formatieren

  • ich möchte aus einem Datum den Monat ziehen und zwar nicht als Zahl, sondern z.B. 'Februar'




    Msgbox mdate.GMTTime ' das hier gibt 10.02.2009 , passt weil ich vom aktuellen Datum einen Monat abziehe
    Msgbox Month(mdate.GMTTime) 'hier bekomme ich "2" - das passt auch
    Msgbox Format(Month(mdate.GMTTime),"MMMM") 'aber hier bekomme ich den Januar, hier sollte aber Februar erscheinen



    wie geht denn das???



    Lizzy

  • Ein sehr sinniges Posting :evil:


    Was ist mDate (auch wenn ich mir das denken kann)?
    "Weil ich vom aktuellen Monate einen abziehe" - meinst Du, das interessiert im Zusammenhang mit Deinem Problem jemanden ernsthaft?
    Wie kommst Du zu mDate?
    Warum konvertierst Du überhaupt zum GMT?
    Warum tust Du da mit der NotesDateTime class herum? Wozu soll das gut sein?


    Die Format- bzw. Format$-Funktion tut das, was sie soll. Da geht demzufolge an ganz anderer Stelle etwas schief.


    Logisch sinnvolle Fragen führen am direktesten zu einer logisch sinnvollen Antwort. Was Foren angeht, führt das nicht selten sogar dazu, dass man beim Schreiben der Frage die Antwort selber erkennt.


    Bernhard

    • Offizieller Beitrag

    Format muss das komplette Datum übergeben werden.


    ' mdate ... NotesDateTime
    Msgbox Format(mdate.GMTTime,"MMMM")


    Anstelle von GMTTime würde ich LSLocalTime verwenden. Damit wird das Datum / die Zeit auf die aktuell im BS eingestellte Zeitzone angepasst.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • koehlerbv
    Übrigens auch ein sehr sinniges Posting.





    Diali
    Vielen Dank, so funktioniert es.



    Gibt es denn eine logische Erklärung warum diese beiden Formeln


    Msgbox Month(mdate.GMTTime)
    Msgbox Format(mdate.GMTTime,"MMMM")


    unterschiedliche Ergebnisse bringen? Bei der ersten erhalten ich Monat 2, bei der zweiten erhalte ich jetzt Dezember.

    • Offizieller Beitrag

    bei der 2. kannst Du das Format selber einstellen.


    Schau mal in der Designer-Hilfe, da sind die Möglichkeiten aufgeführt.


    Gruß
    Dirk

  • Dein Problem ist immer noch, daß du eben nicht GMTTime übergeben solltest, sondern wie Diali schon sagte LSLocalTime


    GMTTime ist nämlich ein String und kein Datums-/Zeit Variable


    Zitat


    A string representing a date-time

  • Nein ich nehm ja jetzt LSLocalTime, und damit funktioniert es, wie es soll. (Msgbox ist natürlich nur zum Testen)



    Msgbox mdate.LSLocalTime ---> 11.03.2009
    Msgbox Month(mdate.LSLocalTime) ---> 3
    Msgbox Format(mdate.LSLocalTime,"MMMM") ---> März



    Also Problem hab ich jetzt keins mehr.


    Ich würde nur gerne verstehen, warum bei der zweiten Formel hier nicht der März rauskommt:

    Msgbox Month(mdate.GMTTime) ---> 3
    Msgbox Format(mdate.GMTTime,"MMMM") ---> Dezember ???

    • Offizieller Beitrag

    LSGMTTime und LSLocalTime gibt immer einen Wert vom Typ Datum/Zeit zurück.
    GMTTime und LocalTime gibt immer einen String zurück.


    Format interpretiert aber String und Datum/Zeit-Typen anders.


    Welches Datum hast Du denn ausgeben wollen? War der Tag größer 11?


    Gruß
    Dirk

  • ich habe das heute mal mit verschiedenen Datumsangaben getestet. Das Ergebnis scheint ziemlich willkürlich zu sein und immer falsch.



    Wie auch immer, ich weiss jetzt worauf ich achten muss.


    Danke an Diali und taurec

    • Offizieller Beitrag

    poste mal Deinen Code, dann können wir Dir bestimmt sagen, was falsch ist.


    Gruß
    Dirk

  • Also wie gesagt, mit eurer Hilfe und LSLocalTime passt es jetzt, wäre nur interessehalber.



    mein ursprünglicher Code war dieser:


    Dim mdate As New NotesDateTime( Today() )
    Call mdate.AdjustMonth( -1 )
    'Msgbox zum Testen vor Weiterverarbeitung
    Msgbox Month(mdate.GMTTime) --> hier kommt der richtige Monatswert
    Msgbox Format(mdate.GMTTime,"MMMM") --> hier kommt Dezember statt Februar




    wenn ich statt Today irgend ein Datum einsetze, dann kommt z.B. beim 01.01.2009 der Oktober, oder beim 01.03.2009 der Juli.

    • Offizieller Beitrag

    wie setzt Du denn ein anderes Datum?


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Siehe Hilfe zu NotesDateTime:


    Da wo du Today angibst wird die Zahl als Text interpretiert, da Today grundsätzlich eine Zahl zurückliefert wird diese eben versucht als Datum zu interpretieren was zu genau diesen seltsamen Effekten führt.


    Und abhängig davon wie du die anderen Daten setzt wird es da wohl das gleiche sein