führende 0 bei Datums/Zeit-angaben?



  • Ich brauch wieder mal eure Hilfe!

    ich will einen Dateinamen generieren, welcher unter Anderem aus Datum und Zeit besteht. Es ist allerdings gefordert, dass die Monats und Zeitstellen immer eine führende 0 haben

    z.b. 20040810152438

    die Zeit liegt mit Hilfe der kernel32.dll als int Zahl vor Mit sprintf konvertiere ich sie zu einem String, den ich nachher im Dateinamen mit strcat zusammenfüge

    sprintf(Jahr, "%4i", zeit.wYear);
    sprintf(Monat, "%i", zeit.wMonth);
    sprintf(Tagd, "%i",  zeit.wDay);
    sprintf(Stunde, "%i", zeit.wHour);
    sprintf(Minuted, "%i", zeit.wMinute);
    sprintf(Sekunde, "%i", zeit.wSecond);
    

    z.b. so.

    ich habe schon probiert %2i zu schreiben, was als resultat keine 0 sondern ein leerzeichen hat.

    weiters hab ich probiert mit strlen die stringlänge auszulesen und falls diese nicht 2 ist, mit strcat vorne eine 0 dranzufügen, was irgendwie auch nicht funktionierte.

    vielleicht, weiss da jemand eine lösung?

    vielen herzlichen dank!

    SharkT



  • %02i

    aber was ist %i? normalerweise nimmt man doch %d.



  • Ringding schrieb:

    %02i

    aber was ist %i? normalerweise nimmt man doch %d.

    i is integer d is double, oder irr ich mich da?

    mfg SharkT



  • is das nicht, so wenn ich %02i schreibe, dass aus 15 dann 015 wird?



  • a nein, so gehts! danke!

    ich hoff, dass ich in zukunft nicht mehr so lästig sein muss, mit so kinderkram, wenn ich mal a bisserl besser bin!

    mfg SharkT



  • d ist nicht double und wenn du schon sprintf zum formatieren nimmst (*yuck*) dann nimm doch lieber die speziell fürs formatieren von Daten geeignete man: strftime(3) Funktion


Log in to reply