PHP - 115 102 byte
Một giải pháp trong 155 byte (được gói ở đây trên 3 dòng để dễ đọc):
$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);
Dòng thứ hai tính toán (từ trong ra ngoài) các giá trị chính xác của các thành phần bắt đầu bằng micro giây.
Phiên bản ngắn hơn (115 byte, được gói trên hai dòng để dễ đọc):
$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);
Nó cũng sử dụng các bài tập được nhúng để tính toán chuyển đổi số lượng đầu vào của micro giây theo mili giây, giây, phút và giờ bằng cách sử dụng số dấu phẩy động. Toán tử mô đun ( %
) và định dạng số thập phân ( %d
) của printf()
sau đó được sử dụng để buộc chúng thành số nguyên (phần phân số bị bỏ qua).
Một giải pháp khác sử dụng các hàm ngày (102 byte)
$u=$argv[1];
echo gmdate("H:i:s",strtotime("@".substr($u,0,-6))),":",substr($u,-6,3),":",substr($u,-3);
Phần giờ: phút: giây được xử lý bởi các hàm ngày PHP gmdate()
và strtotime()
, phần nghìn và micro giây được trích xuất dưới dạng chuỗi từ giá trị đầu vào.
Sử dụng:
$ 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
có lẽ sẽ tốt hơn (và dễ dàng hơn). Tuy nhiên, không thể thay đổi nó ngay bây giờ.