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);
दूसरी पंक्ति कंप्यूटर्स के साथ शुरू होने वाले घटकों के सटीक मानों की गणना (अंदर से बाहर तक) करती है।
छोटे संस्करण (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
शायद बेहतर (और आसान) होगा। फिर भी, अब इसे बदलने नहीं जा सकता।