Datum einlesen und verarbeiten



  • Hi

    ich lese gerade konfigurationsdateien-linux ein,
    das format sieht in etwa so aus:

    - - - [22/Jul/2015:18:02:36 +0200] - - - - - -
    

    mein problem ist nun das ich die zeit gerne als UTC behandeln mögchte dazu muss
    ich das datum/bzw. die zeit i.wie auslesen...
    aber wie kann ich das geschickt anstellen?

    ich kann ja nat. jetzt die "/" als trennzeichen sehen und dann trennen und rechnen, aber da müsste ich ja dann auch die ":" behandeln und da die monate als wortl. formulierung vorliegen müsste ich diese auch i.wie als zahl darstellen ...

    gibt es hier zu vll bibliotheken?
    wie kann ich das machen bzw. wie würdet ihr dieses problem lösen?

    lg



  • Boost.DateTime?



  • Bis auf den : zwischen 2015 und 18 sieht das für mich nach nem Standardformat aus. Sollte viele Libraries geben die das verdauen wenn du diesen ":" durch z.B. ein Leerzeichen ersetzt. Könnte sein dass es sogar mit sscanf geht. Bzw. u.U. musst du den String in drei Teile splitten, also "22/Jul/2015", "18:02:36" und "+0200".

    Der Tip von theta ist sicher auch nicht verkehrt.

    Blöd wird es nur wenn die du die Locale nicht kennst. Da das Datum mit "/" getrennt wird und die Monatsnamen auf 3 Buchstaben gekürzt sind würde ich aber mal von en-US bzw. en-UK ausgehen.



  • theta schrieb:

    Boost.DateTime?

    ok, danke für den tipp, das schau ich mir mal an. 🙂

    hustbaer schrieb:

    Bis auf den : zwischen 2015 und 18 sieht das für mich nach nem Standardformat aus. Sollte viele Libraries geben die das verdauen wenn du diesen ":" durch z.B. ein Leerzeichen ersetzt. Könnte sein dass es sogar mit sscanf geht. Bzw. u.U. musst du den String in drei Teile splitten, also "22/Jul/2015", "18:02:36" und "+0200".

    Der Tip von theta ist sicher auch nicht verkehrt.

    Blöd wird es nur wenn die du die Locale nicht kennst. Da das Datum mit "/" getrennt wird und die Monatsnamen auf 3 Buchstaben gekürzt sind würde ich aber mal von en-US bzw. en-UK ausgehen.

    jo ok, ich schau mir nochmal boost.DateTime an aber ich denk, werde es einfach splitten und dann umrechenen 🙂

    vielen dank für die antworten 👍
    lg


Anmelden zum Antworten