2012-02-11 15 views
5

के साथ 3 अंकों मिलीसेकंड मैं 13 अंक की संख्या है और दिनांक और समय बनाने के लिए साथ milisecond शामिल चाहतेबनाएं php

उदाहरण कोड इस तरह है यह मेरा PHP स्क्रिप्ट

$mil = 1328910295939; 
$seconds = $mil/1000; 
$showdate = date('Y:m:d H:i:s', $seconds) ; 

echo "$showdate"; 

परिणाम इस तरह है 2012: 02: 10 15: 44: 55.xxx ===> xxx 3 अंकों का मिलीसेकंड है जो मैं दिखाना चाहता हूं।

और कैसे एच के बाद 3 अंकों milisecond साथ शामिल करने के लिए है: i: रों

कृपया मेरी मदद करो .....

उत्तर

6

इस तरह कुछ कैसे?

$mil = 1328910295939; 

function toTimestamp($milliseconds) 
{ 
    $seconds = $milliseconds/1000; 
    $remainder = round($seconds - ($seconds >> 0), 3) * 1000; 

    return date('Y:m:d H:i:s.', $seconds).$remainder; 
} 

echo toTimestamp($mil); 

तादा!

यह भी बहुत तेज़ होना चाहिए।

इसके अलावा, यह आउटपुट है: 2012:02:10 15:44:55.939 - आप क्यों उपयोग नहीं कर रहे हैं - दिनांक भाग को सीमित करने के लिए मुझे धड़कता है।

+0

धन्यवाद दोस्त ..... महान काम। आप सबसे अच्छे हैं, क्योंकि इंटरनेट में एक हफ्ते की तलाश में आईएएम का समाधान नहीं है। – Smith

+0

हैलो वेस्टी मुझे अभी भी समस्या है कि HOUR समय 2 घंटे तेज था ... उदाहरण 22: 07: 45.434 एक घंटा होना चाहिए 20. – Smith

+0

यह आपके सर्वर के साथ एक समस्या है - आपको टाइमज़ोन सेट करने की आवश्यकता होगी। – Westie

5

बस पिछले दो पात्रों बंद ट्रिम:

substr(date('Y-m-d H:i:s.u',1328910295939), 0, -2) 
+0

अपने सिस्टम पर, यह evalutes "2025/12/10 22: 17: 55.0000" के लिए (PHP 5.3.6 उबंटू पर) – iblue

+0

यह अभी भी काम नहीं कर रहा है .. कृपया मुझे इसके साथ फ्रीज करने में मदद करें। – Smith

+0

यह मेरी PHP स्क्रिप्ट $ mil = 1328910295939 है; $ सेकंड = $ मिलियन/1000; $ showdate = date ('वाई: एम: डी एच: आई: एस', $ सेकंड); गूंज "$ showdate"; एच के बाद 3 अंकों milisecond साथ शामिल करने के लिए 10 15:44:55 और कैसे:: 02: परिणाम इसमें 2012 की तरह है मैं: रों – Smith

4

यहाँ एक समारोह को सटीक ढंग से यह तुम्हारे लिए क्या करेंगे (गोलाई से, काट नहीं):

function getTimestamp() 
{ 
     $microtime = floatval(substr((string)microtime(), 1, 8)); 
     $rounded = round($microtime, 3); 
     return date("Y-m-d H:i:s") . substr((string)$rounded, 1, strlen($rounded)); 
} 

Expla राष्ट्र:

माइक्रोटाइम() 2 नंबरों को 1 स्ट्रिंग के रूप में देता है, जो किसी स्थान से सीमित होता है। दूसरा नंबर यूनिक्स युग के बाद से सेकंड की मात्रा है, और दूसरा नंबर दूसरे नंबर के बाद से माइक्रोसेकंड की मात्रा है। असल में, पहली संख्या 8 सटीक प्रारूप (0.00000000) में व्यक्त माइक्रोसेकंड की मात्रा है और पीछे 0s काट कभी नहीं किया जाता है।

हम इसे 3 (0.00) की परिशुद्धता के लिए गोल करते हैं, और अग्रणी 0 को काटते हैं, और वास्तविक टाइमस्टैंप में जोड़ते हैं।

किसी कारण से आपके लिए php doc, microseconds, वास्तव में समर्थित नहीं प्रतीत होता है। मुझे उस विधि का उपयोग करते समय 0.000 हर बार मिलता है। तो मैंने बैकअप समाधान के रूप में microtime() का सहारा लिया।

+0

उदाहरण कोड इस तरह है यह मेरा PHP स्क्रिप्ट $ मिल के बराबर है = 1328910295939; $ सेकंड = $ मिलियन/1000; $ showdate = date ('वाई: एम: डी एच: आई: एस', $ सेकंड); गूंज "$ showdate"; परिणाम इस तरह है 2012: 02: 10 15: 44: 55.xxx ===> xxx 3 अंकों का मिलीसेकंड है जो मैं दिखाना चाहता हूं। – Smith

+1

'u' प्रारूप उन तिथियों के लिए समर्थित है जिनमें माइक्रोसेकंड (उदा। 'दिनांक समय' उदाहरण) शामिल हैं। 'दिनांक()' फ़ंक्शन केवल पूर्णांक टाइमस्टैम्प के साथ काम करता है इसलिए आंशिक सेकंड के बारे में नहीं पता है। – salathe

1
$t = 1328910295939; 
echo date('Y-m-d H:i:s.', substr($t, 0, -3)) . substr($t, -3); 

आउटपुट: 2012-02-10 16:44:55.939

0

क्योंकि इन उत्तरों अपने सभी जटिलता में काफी मनोरंजक थे, यहाँ (यह समय क्षेत्र पर निर्भर करता है) है अभी तक प्रश्नकर्ता के मूल कोड का उपयोग करता है और नहीं करता है कि भविष्य भावी पीढ़ी के लिए एक और जवाब ' तारों के रूप में संख्याओं का इलाज नहीं करते हैं।

$mil = 1328910295939; 
$seconds = floor($mil/1000); 
$fraction = $mil % 1000; 
$showdate = date('Y:m:d H:i:s',$seconds) . ".$fraction"; 

echo "$mil<br> 
$seconds<br> 
$fraction<br> 
$showdate"; 

आउटपुट एक सर्वर ईएसटी समय क्षेत्र के लिए सेट पर निम्नलिखित:

1328910295939 
1328910295 
939 
2012:02:10 16:44:55.939 
संबंधित मुद्दे