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