Der Martin: Perl Rechnung in Regex

Beitrag lesen

Moin,

ich bin zwar kein Perl-Spezialist - im Gegenteil, ich habe von Perl fast keine Ahnung.

in einem Text habe ich viele Zeitangaben in spitzen Klammern in Millisekunden, z.B. '<123456789>'. Diese wollte ich alle in Stunden:Minuten:Sekunden.Millisekunden, d.h. z.B. '(34:17:36.789)' umwandeln.

Aber dass man eine komplizierte Rechnung nicht in einem Regex machen kann, ist auch mir klar. Regex arbeitet auf Strings, da wird nix berechnet. Regex sind nicht für jedes Problem geeignet.

Dabei wäre

xxx = Millisekunden

hh = (int(xxx/3600000))

mm = int((xxx - hh * 3600000)/60000)

ss = int((xxx - hh * 3600000 - mm * 60000)/60000)

nnn = xxx % 1000

Ich würd's vom Rechenweg her andersrum und schrittweise machen, dann wird's übersichtlicher. Etwa so:

nnn = xxx % 1000;   // Millisekunden
xxx /= 1000;
ss  = xxx % 60;     // Sekunden
xxx /=60;
mm  = xxx % 60;     // Minuten
xxx /=60;
hh  = xxx;          // und die Stunden bleiben übrig.

Jetzt muss man das nur noch bei der Ausgabe mit führenden Nullen formatieren.

So long,
 Martin

--
Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
- Douglas Adams, The Hitchhiker's Guide To The Galaxy