2012-12-27 22 views
6
बिना सेकंड

संभव डुप्लिकेट:
Convert seconds to Hour:Minute:Secondपीएचपी तिथि() घंटे, मिनट और अग्रणी शून्य

मैं सेकंड में परिवर्तित करने का एक अच्छा तरीका खोजने के लिए इंटरनेट पर सभी खोज किया गया है मिनटों में: अग्रणी शून्य के बिना सेकंड। मैंने पहले ही this question की जांच की है, जो एकमात्र ऐसा है जिसे मैं ढूंढने में सक्षम था, हालांकि इनमें से कोई भी जवाब बहुत अच्छा नहीं दिखता है। शायद वे इसे हासिल करने का एकमात्र और सबसे अच्छा तरीका हैं, हालांकि मुझे आशा नहीं होगी।

मैंने यह किया है और यह मुझे प्रमुख शून्यों के बिना मिनटों की संख्या देता है, हालांकि मैं सेकंड प्राप्त करने में असमर्थ हूं। इस तरह से ऐसा करने का एकमात्र तरीका यह है कि गणित की कुछ पंक्तियां और ऐसा करना होगा, लेकिन ऐसा लगता है कि इस तरह के लिए कुछ आसान काम है ... जो मुझे नहीं पता कि PHP क्यों करता है 'टी .... यह मिनट और वैसे भी सेकंड के लिए में बनाया गया है

intval(gmdate("i:s", $duration)); 

संपादित सभी मुझे क्या करना कोशिश कर रहा हूँ एक वीडियो में सेकंड की संख्या परिवर्तित करने के लिए, एक एच में है: एम: एस प्रारूप।

+0

आपको 'अंतराल()' के लिए क्या चाहिए? ** आपने इसे क्यों जोड़ा? – zerkms

+0

ठीक है, यह मेरे प्रश्न में अन्य अतिप्रवाह प्रश्नों के उत्तर में से एक है, यह शून्य, और बाकी सब कुछ भी हटा देता है .. –

+0

नहीं, ऐसा नहीं है। कार्यों को यादृच्छिक रूप से लागू करने से पहले कृपया दस्तावेज़ पढ़ें: http://php.net/intval – zerkms

उत्तर

2
implode(
    ':', 
    array_map(
     function($i) { return intval($i, 10); }, 
     explode(':', gmdate('H:i:s', $duration)) 
    ) 
) 

लेकिन क्या बारे में अगर घंटे == 0 तो 0 प्रिंट नहीं है: और बस है मी: रों

preg_replace(
    '~^0:~', 
    '', 
    implode(
     ':', 
     array_map(
      function($i) { return intval($i, 10); }, 
      explode(':', gmdate('H:i:s', $duration)) 
     ) 
    ) 
) 
+0

1 लाइन में सबकुछ रखने पर अच्छी नौकरी :)। –

+0

धन्यवाद, इसका अनुमानित परिणाम है। मैंने यह नहीं पूछा, हालांकि अगर समय == 0 के बारे में क्या 0 प्रिंट नहीं करते हैं: और बस एम: एस –

+0

@ डायलन क्रॉस: संस्करण 2 – zerkms

1

gmdate दूसरे पैरामीटर के रूप में एक टाइमस्टैम्प लेता है। आप कुछ इस तरह करना चाहिए:

echo gmdate("H:i:s", mktime(0, 0, 0, 1, 1, 1998) + $duration); 

intval, वहां नहीं होना चाहिए के रूप में आप एक स्ट्रिंग हो रही है और यह एक पूर्णांक के लिए फिर से बदलने कर रहे हैं। एच के साथ: मैं: आपके पास 10:40:05 है।
हालांकि यदि आपके पास अवधि है तो 24h।

+0

हालांकि मैं अग्रणी शून्य को हटाना चाहता हूं, उपर्युक्त कोड नहीं है। –

+0

यदि आप अग्रणी 0 के बिना चाहते हैं तो आपको $ घंटे = दिनांक ("एच", एमकेटाइम (0, 0, 0, 1, 1, 1 99 8) + $ अवधि का उपयोग करना होगा); $ मिनट = अंतराल (दिनांक ("i", mktime (0, 0, 0, 1, 1, 1 99 8) + $ अवधि)); $ सेकंड = अंतराल (दिनांक ("एस", एमकेटाइम (0, 0, 0, 1, 1, 1 99 8) + $ अवधि)); –

+0

मैंने अपना कोड संपादित किया, मुझे एहसास है कि आपको gmdate की बजाय तिथि का उपयोग करना चाहिए। अन्यथा अब सर्वर की तारीख के आधार पर सटीक नहीं हो सकता है। –

2

मैं सिर्फ यह iteratively लिखना होगा:

function duration_to_timestring($duration) 
{ 
     $s = []; 
     if ($duration > 3600) { 
       $s[] = floor($duration/3600); 
       $duration %= 3600; 
     } 
     $s[] = floor($duration/60); 
     $s[] = floor($duration % 60); 

     return join(':', $s); 
} 
+0

यह भी अच्छा होगा, हालांकि मैं अभी भी यह नहीं समझ सकता कि php don' टी शून्य के बिना मिनट और सेकंड शामिल हैं। –

+1

@DylanCross केवल विशेषाधिकार प्राप्त पता है क्यों, शायद वे प्रारूप विनिर्देशकों के रूप में उपयोग करने के लिए उपयोगी अक्षरों से बाहर हो गए ;-) –

संबंधित मुद्दे