Jan Huss: Bei der Zeit Zahlen kleiner 10 auch zweistellig darstellen lassen.

Hallo Ihr,

ich streite mich gerade mit Perl über den Syntax bei folgendem Problem:

Wenn eine Zahl kleiner 10 ist, dann möchte ich Sie trotzdem mit zwei Stellen abspeichern. (09) Nun ist es zwar nicht unbedingt das Problem eine solche Funktion zu schreiben, aber die gibt es doch auch vorgefertigt, oder?

Sagt mal was und vielen Dank für Eure Tipps!

Gruß Jan

  1. Hallo,

    ich streite mich gerade mit Perl über den Syntax bei folgendem Problem:

    Du solltest nicht mit Perl streiten, bringt nichts. Vertragt euch wieder o.k.

    Wenn eine Zahl kleiner 10 ist, dann möchte ich Sie trotzdem mit zwei Stellen abspeichern. (09) Nun ist es zwar nicht unbedingt das Problem eine solche Funktion zu schreiben, aber die gibt es doch auch vorgefertigt, oder?

    Die Lösung heißt : sprintf bzw. printf
    Diese Funktionen sind mehr oder weniger aus der C-Welt übernommen und sorgen für formatierte Ausgaben. Die können noch viel mehr als nur einstellige Zahlen zweistellig ausgeben und solche Sachen.

    Der Unterschied und weitere Erklärungen  ist in der Doku (perlfunc) nachzulesen.

    hier die Beispiele:

    printf("%2.2d",$zahl);   # gibt $zahl mindestens 2-stellig auf STDOUT aus

    $datumsstring = sprintf("%2.2d.%2.2d.%4.4d",$tag,$monat,$jahr); # formatiert das Datum, so wie Du es haben willst (denk ich)

    Sagt mal was ...

    Abgesehen davon, daß Du mich sicher nicht hören kannst wenn ich etwas _sage_, finde ich die Befehlsform etwas deplaziert. Das klingt ein bißchen nach 'ABER RASCH!!!!' für mich, falls ich das in die falsche Kehle bekommen habe, möchte ich mich für diesen Absatz entschuldigen.

    Grüße
      Klaus

    1. Sagt mal was ...
      Abgesehen davon, daß Du mich sicher nicht hören kannst wenn ich etwas _sage_, finde ich die Befehlsform etwas deplaziert. Das klingt ein bißchen nach 'ABER RASCH!!!!' für mich, falls ich das in die falsche Kehle bekommen habe, möchte ich mich für diesen Absatz entschuldigen.

      Entschuldige Klaus, das sollte als Motivation, sich mit einer solch einfachen Frage zu beschäftigen, gedacht sein. Weiter nichts.

      Danke für Deine rasche Hilfe!

      Gruß Jan

    2. Gruss auch

      printf("%2.2d",$zahl);   # gibt $zahl mindestens 2-stellig auf STDOUT aus
      $datumsstring = sprintf("%2.2d.%2.2d.%4.4d",$tag,$monat,$jahr); # formatiert das Datum, so wie Du es haben willst (denk ich)

      hm, nun ja, das stimmt soweit nich ganz :-)

      %2.2 ist eigentlich in dem zusammenhang sinnlos, da fuer floats gedacht ->

      sollte eigentlich %02d heissen (zweistellig mit fuehrender null)

      nix fuer ungut

      cua

      n.d.p.

      1. Hallo,

        hm, nun ja, das stimmt soweit nich ganz :-)

        %2.2 ist eigentlich in dem zusammenhang sinnlos, da fuer floats gedacht ->

        sollte eigentlich %02d heissen (zweistellig mit fuehrender null)

        nix fuer ungut

        Da siehst Du wieder, wie das so ist mit alten Gewohnheiten. Einmal eine funktionierende Methode gefunden, und dann immer wieder angewandt.
        Ich hab's mir mit einem alten C-Compiler (weiß nicht mehr, ich glaub der war von Intel für RMOS) so angewöhnt, da ist's einfach nicht anders gegangen.

        Und jetzt hab ich den Salat. Es hat bei mir zwar immer funktioniert, aber Du hast natürlich recht. Abs sofort keine '%2.2d' mehr wenn '%02d'  das probate Mittel ist. Ich schwör's

        Danke
           Klaus