PHP - 115 102 ไบต์
วิธีการแก้ปัญหาใน 155 ไบต์ (ห่อที่นี่ใน 3 บรรทัดสำหรับการอ่าน):
$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);
บรรทัดที่สองคำนวณ (จากภายในสู่ภายนอก) ค่าที่แน่นอนของส่วนประกอบเริ่มต้นด้วย microseconds
เวอร์ชันที่สั้นกว่า (115 ไบต์ห่อด้วยสองบรรทัดเพื่อให้อ่านได้):
$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);
นอกจากนี้ยังใช้การมอบหมายแบบฝังตัวเพื่อคำนวณการแปลงจำนวนอินพุตของไมโครวินาทีเป็นมิลลิวินาทีวินาทีนาทีและชั่วโมงโดยใช้หมายเลขทศนิยม ตัวดำเนินการโมดูลัส ( %
) และรูปแบบตัวเลขทศนิยม ( %d
) ของprintf()
จะถูกใช้เพื่อบังคับให้ตัวเลขจำนวนเต็ม (ส่วนที่เป็นเศษส่วนจะถูกละเว้น)
โซลูชันอื่นที่ใช้ฟังก์ชันวันที่ (102 ไบต์)
$u=$argv[1];
echo gmdate("H:i:s",strtotime("@".substr($u,0,-6))),":",substr($u,-6,3),":",substr($u,-3);
ชั่วโมง: นาที: ส่วนวินาทีถูกจัดการโดยฟังก์ชั่นวันที่ของ PHP gmdate()
และstrtotime()
มิลลิวินาทีและไมโครวินาทีจะถูกแยกออกเป็นสตริงจากค่าอินพุต
การใช้งาน:
$ 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
น่าจะดีกว่า (และง่ายกว่า) ยังไม่สามารถเปลี่ยนได้ในขณะนี้