Datumsformat ändern yyyy-mm-dd -> dd.mm.yyyy

  • Hallo,

    ich erhalte täglich Aktienkurse per Mail. Die Daten liegen als Text mit Semikolon als Trennzeichen vor. Zur Weiterverarbeitung werden die entsprechenden Zeilen mit den Kursdaten per Filtermanager und RegExp ausgefiltert und fortlaufend in eine Textdatei geschrieben.

    Leider wird ab und zu das Format der Mail geändert. Bisher war das Datum im Format dd.mm.yyyy angegeben und stand allein in einer Spalte. Jetzt ist es im Format yyyy-mm-dd hh:mm:ss angegeben.

    Meine Finanzsoftware versteht leider nur das deutsche Datumsformat ohne Zeitangabe.

    Wie kann ich die Zeile mit den Kursdaten ausfiltern, in eine Textdatei schreiben und gleichzeitig das Datumsformat ändern?

    Hier ein Beispiel der Mail:

    Dieser Code hatte bisher ausgereicht:

    Code
    %REGEXPTEXT="(BARING.*?)\n"
    %REGEXPTEXT="(F.TEMP.*?)\n"
    %REGEXPTEXT="(FIDELITY.*?)\n"

    Sicherlich müsste Jahr, Monat und Tag jeweils in ein Subpattern geschrieben werden, aber da stehe ich im Moment auf dem Schlauch. Ausserdem sollte die Original-Mail nicht geändert werden, sondern erst die gefilterte Zeile.

    Ein wenig viel für ein Newbie, aber die SuFu und Google waren nicht sehr ergiebig.

    Danke

    TB! v3.99. mit XMP-Plugin v1.1.8.0

    "Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." Albert Einstein

  • Könnte so vielleicht gehen

    Code
    %XMP_StrRERepl(%TEXT,";(\d\d\d\d)-(\d\d)-(\d\d)\s+(\d\d:\d\d\:d\d)$",";$3.$2.$1 $4")

    Ohne Gewähr

    //EDIT: Habe überlesen, dass du ja schon die ausgegebene Datei filterst


    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.

    Einmal editiert, zuletzt von GwenDragon (19. Februar 2008 um 19:13)

  • @ GwenDragon,

    mit deinem Tip hab' ichs leider nicht hinbekommen, aber der Ansatz hat mich zu einer anderen Lösung gebracht. Dieser Code funktioniert:

    Code
    %XMP_ReX("%TEXT","(BARING.*?)(\d{4})-(\d{2})-(\d{2})\s(\d{2}:\d{2}\:\d{2})",1)
    %XMP_ReX("%TEXT","(BARING.*?)(\d{4})-(\d{2})-(\d{2})\s(\d{2}:\d{2}\:\d{2})",4).
    %XMP_ReX("%TEXT","(BARING.*?)(\d{4})-(\d{2})-(\d{2})\s(\d{2}:\d{2}\:\d{2})",3).
    %XMP_ReX("%TEXT","(BARING.*?)(\d{4})-(\d{2})-(\d{2})\s(\d{2}:\d{2}\:\d{2})",2);
    %XMP_ReX("%TEXT","(BARING.*?)(\d{4})-(\d{2})-(\d{2})\s(\d{2}:\d{2}\:\d{2})",5)

    Der Code ist der besseren Lesbarkeit halber umgebrochen, es steht natürlich alles in einer Zeile.

    Schade ist, dass man bei diesem Macro nur ein Subpattern wieder ausgeben kann. Das macht den Code bei vielen auszulesenden Zeilen ziemlich lang. Für Tips, wie man das verkürzen kann, bin ich natürlich dankbar.

    Ich glaube ja, das geht mit den TB-eigenen Macros %SETPATTREGEXP und %REGEXPBLINDMATCH. Aber das habe ich noch nicht getestet.

    Danke für den Denkanstoß.

    "Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." Albert Einstein

  • Mein XMP-Makro geht nicht?
    Das ersetzt Zeichenfolgen wie 2008-11-03 22:33 am Zeilenende richtig auf dein Zeitformat um.

    //EDIT:

    Zitat
    Code
    %XMP_StrRERepl(%TEXT,";(\d\d\d\d)-(\d\d)-(\d\d)\s+(\d\d:\d\d\:d\d)$",";$3.$2.$1 $4")


    Ach Mist, da fehlen die Anführungszeichen umd das %TEXT; das muss

    Code
    %XMP_StrRERepl("%TEXT", ";(\d\d\d\d)-(\d\d)-(\d\d)\s+(\d\d:\d\d\:d\d)$",";$3.$2.$1 $4")

    sein. :doh:


    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.

    Einmal editiert, zuletzt von GwenDragon (20. Februar 2008 um 19:28)

  • @ GwenDragon,

    sorry, dein Macro funktioniert tadellos. Ich dachte erst %XMP_StrRERepl wäre falsch geschrieben und habe das in %XPM_StrRepl geändert. Damit geht es leider nicht. Dann habe ich festgestellt, das es dieses Macro erst ab Version 1.1.9 gibt. Ich hatte aber wie angegeben Version 1.1.8. Und siehe da, nach Update auf 1.1.9 funktionierte es.

    Danke dafür.

    Leider wird der komplette Text der Mail in die Datei exportiert. Ich brauche aber nur ein paar Zeilen daraus. Mir scheint man kann für den zu durchsuchenden Text kein RegExp angeben. Ich lasse mich gern eines besseren belehren.

    @ Bernd,

    ich habe mir gerade mal die Geschichte mit den TB-eigenen Macros angeschaut. Und siehe da,

    Code
    %SETPATTREGEXP="(BARING.*?)(\d{4})-(\d{2})-(\d{2})\s(\d{2}:\d{2}\:\d{2})"%REGEXPBLINDMATCH="%TEXT"%SUBPATT="1"%SUBPATT="4".%SUBPATT="3".%SUBPATT="2";%SUBPATT="5";


    funktioniert einwandfrei und ist erheblich kürzer.

    Übrigens war http://www.regenechsen.de eine der ersten Seiten, die ich zu diesem Thema zu Rate gezogen habe. Damit habe ich dann auch die entgültige Lösung hinbekommen. :thumbup:

    "Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." Albert Einstein