PHP - 115 102 Bytes
Eine Lösung in 155 Bytes (hier aus Gründen der Lesbarkeit in 3 Zeilen eingeschlossen):
$a=$argv[1];
$h=($a-($m=($a=($a-($s=($a=($a-($t=($a=($a-($u=$a%1000))/1000)%1000))/1000)%60))/60)%60))/60;
printf("%02d:%02d:%02d:%03d:%03d",$h,$m,$s,$t,$u);
Die zweite Zeile berechnet (von innen nach außen) die genauen Werte der Komponenten, beginnend mit den Mikrosekunden.
Die kürzere Version (115 Bytes, aus Gründen der Lesbarkeit in zwei Zeilen eingeschlossen):
$u=$argv[1];$h=($m=($s=($t=$u/1000)/1000)/60)/60;
printf("%02d:%02d:%02d:%03d:%03d",$h,$m%60,$s%60,$t%1000,$u%1000);
Außerdem werden eingebettete Zuweisungen verwendet, um die eingegebene Anzahl von Mikrosekunden in Millisekunden, Sekunden, Minuten und Stunden mithilfe von Gleitkommazahlen zu berechnen. Der Moduloperator ( %
) und das Dezimalzahlenformat ( %d
) von printf()
werden dann verwendet, um sie zu Ganzzahlen zu zwingen (der Bruchteil wird ignoriert).
Eine andere Lösung, die die Datumsfunktionen verwendet (102 Bytes)
$u=$argv[1];
echo gmdate("H:i:s",strtotime("@".substr($u,0,-6))),":",substr($u,-6,3),":",substr($u,-3);
Die Stunden: Minuten: Sekunden Teil wird von den PHP Datumsfunktionen behandelt gmdate()
und strtotime()
die Milli- und Mikrosekunden werden als Zeichenfolge aus dem Eingangswert extrahieren.
Verwendung:
$ php -r '$u=$argv[1];echo gmdate("H:i:s",strtotime("@".substr($u,0,-6))),":",substr($u,-6,3),":",substr($u,-3);' 7198898787; echo
01:59:58:898:787
hh:mm:ss.000000
wahrscheinlich besser (und einfacher) gewesen wäre. Ich kann es jetzt noch nicht ändern.