datumsangabe parsen



  • Moin,

    ich habe ein Problem mit einem Regular Expression Pattern .

    Das Datumsformat sieht folgendermaßen aus:

    [z]YYMMDDhhmm[ss]
    

    oder

    [z]YYYYMMDDhhmm[ss]
    

    was in eckigen Klammern steht sind Optionen. Im Moment sieht mein Pattern so aus, den ich dann erweitern muß.

    (^([0-9])?([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?$)
    

    Was mich stört ist das das Jahr 2 oder 4 stellig sein kann mit der Option das Sekunden da sein können oder nicht. Ist es überhaupt möglich dies zu parsen?

    Beispiel

    060502171500
    20060502171500
    


  • Ich glaube nicht.

    Bei der Version mit 4stelligem Jahr (ohne Sekunden) und 2stelligem Jahr (mit Sekunden) hast du ja die gleiche Anzahl an Ziffern, ohne ein Trennzeichen.

    Höchstens du definierst dir einen Zeitraum für die Jahre: Wenn das Datum mit '20' oder '19' anfängt, handelt es sich um ein vierstelliges Datum. Dann kannst du die Stellen zählen und entscheiden, ob Sekunden dranhängen, oder nicht.



  • Danke!

    (^([0-9])?(((19)|(20))?[0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?$)
    

    wie heißt es so schön nur Suboptimal. Aber es reicht mir erstmal.
    Bis 2019 ist noch ist noch ein Weilchen.



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten