2009-12-02 13 views
13

मेरे पास मिलीसेकंड (यानी 70370) की कुल मात्रा है और मैं इसे मिनटों के रूप में प्रदर्शित करना चाहता हूं: सेकंड: मिलीसेकंड यानी 00: 00: 0000।मैं मिलीसेकंड की मात्रा को मिनटों में कैसे प्रारूपित करूं: सेकंड: PHP में मिलीसेकंड?

मैं इसे PHP में कैसे कर सकता हूं?

उत्तर

32

इस के लिए तिथि कार्यों का उपयोग कर के जाल में गिर मत करो: हिमाचल प्रदेश 5.3 आप DateInterval वस्तु का उपयोग कर सकते! आपके पास यहां एक समय अंतराल है, तारीख नहीं। अनुभवहीन दृष्टिकोण इस तरह कुछ करने के लिए है:

date("h:i:s.u", $mytime/1000) 

लेकिन क्योंकि तिथि समारोह (दम तोड़ देना!) दिनांकों के लिए इस्तेमाल किया जाता है, यह समय प्रबंधन नहीं करती है जिस तरह से आप इस स्थिति में करने के लिए यह चाहते हैं - यह लेता है टाइमज़ोन और डेलाइट सेविंग इत्यादि, जब दिनांक/समय स्वरूपित करते हैं।

इसके बजाय, आप शायद सिर्फ कुछ सरल गणित क्या करना चाहते हैं जाएगा:

$input = 70135; 

$uSec = $input % 1000; 
$input = floor($input/1000); 

$seconds = $input % 60; 
$input = floor($input/60); 

$minutes = $input % 60; 
$input = floor($input/60); 

// and so on, for as long as you require. 
+0

हम गलत थे, आप सही हैं;) ++ 1 –

+0

यह अभी भी एक हैक होगा, लेकिन यदि आप सुनिश्चित हैं कि आपके मान 24 घंटे से कम होंगे, तो आप 'gmdate()' का उपयोग कर सकते हैं। – soulmerge

+0

बिल्कुल सही! बहुत - बहुत धन्यवाद! – designvoid

1

मिलीसेकेंड की राशि को अपनी इच्छानुसार प्रदर्शित करने के लिए इस समारोह का प्रयास करें:

<?php 
function udate($format, $utimestamp = null) 
{ 
    if (is_null($utimestamp)) { 
     $utimestamp = microtime(true); 
    } 

    $timestamp = floor($utimestamp); 
    $milliseconds = round(($utimestamp - $timestamp) * 1000000); 

    return date(preg_replace('`(?<!\\\\)u`', sprintf("%06u", $milliseconds), $format), $timestamp); 
} 

echo udate('H:i:s.u'); // 19:40:56.78128 
echo udate('H:i:s.u', 654532123.04546); // 16:28:43.045460 
?> 

Source

+0

@Kamil का अपना नंबर है - मैं कोड inlined तो यह भावी पीढ़ी के लिए यहाँ है। –

+0

बीटीडब्ल्यू - मुझे नहीं पता कि 'preg_replace' क्या कर रहा है। बहुत अजीब लग रहा है। –

+1

@ डोमिनिक - धन्यवाद। मैं अगली बार ऐसा करूंगा। –

1

मेरा मानना ​​है कि वहाँ PHP में स्वरूपण मिलीसेकंड के लिए कोई अंतर्निहित समारोह, आप गणित का उपयोग करना होगा ।

0

के मैनुअल में उल्लेख किया है:

यू माइक्रोसेकंड (PHP में जोड़ा 5.2.2) उदाहरण: 654321

हम एक 'यू' तिथि() फ़ंक्शन

के लिए पैरामीटर

उदाहरण:

if(($u/60) >= 60) 
{ 
$u = mktime(0,($u/360)); 
} 
date('H:i:s',$u); 
4

आप पी उपयोग कर रहे हैं

list($seconds, $millis) = explode('.', $milliseconds/1000); 
$range = new DateInterval("PT{$seconds}S"); 
echo $range->format('%H:%I:%S') . ':' . str_pad($millis, 3, '0', STR_PAD_LEFT); 
+0

आपको $ सेकंड कैसे मिलते हैं? आपको $ मिलिस $ सेकंड में कनवर्ट करना है, है ना? –

+0

@daemonfire: इंगित करने के लिए Thx। अब काम करना चाहिए – soulmerge

+1

यदि आप 70370 डॉलर $ मिलीसेकंड के रूप में उपयोग करते हैं तो आपको 00: 00: 70: 037 ... 70 सेकंड में 1 मिनट नहीं जोड़ना चाहिए? – barfoon

1

क्यों date() और स्वरूपण जब तुम सिर्फ गणित का उपयोग कर सकते से परेशान? अगर $ms मिलीसेकेंड

echo floor($ms/60000).':'.floor(($ms%60000)/1000).':'.str_pad(floor($ms%1000),3,'0', STR_PAD_LEFT); 
संबंधित मुद्दे