2012-02-21 3 views
9

php में मिलीसेकंड के साथ माइक्रोटाइम और डिस्प्ले डेट को घटाएं कैसे?php में मिलीसेकंड के साथ माइक्रोटाइम और डिस्प्ले डेट को घटाएं कैसे?

उदाहरण के लिए: मैं अंत की तारीख और समय

$endtime = 2012-02-21 10:29:59; 

तो मैं आज की तारीख है या microtime से परिवर्तित साथ प्रारंभ दिनांक

$starttime = 2012-02-21 10:27:59.452; 

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)); 
} 

echo getTimestamp(); //sample output 2012-02-21 10:27:59.452 

अब मैं घटाना चाहते हैं निर्धारित किया है: $ finaldate = $ अंतराल - $ स्टार्टटाइम; 00: 00: 02,452

उत्तर

16

आप प्रारंभ/समाप्ति मूल्यों के लिए microtime उपयोग करने की आवश्यकता है, और केवल अंत में प्रदर्शित करने के लिए स्वरूपित

मैं अपने उत्पादन इस तरह बनना चाहता हूँ।

// Get the start time in microseconds, as a float value 
$starttime = microtime(true); 

/************/ 
/* Do stuff */ 
/************/ 

// Get the difference between start and end in microseconds, as a float value 
$diff = microtime(true) - $starttime; 

// Break the difference into seconds and microseconds 
$sec = intval($diff); 
$micro = $diff - $sec; 

// Format the result as you want it 
// $final will contain something like "00:00:02.452" 
$final = strftime('%T', mktime(0, 0, $sec)) . str_replace('0.', '.', sprintf('%.3f', $micro)); 

नोट: इस microtime से नाव मूल्यों लौटने और नाव अंकगणित का प्रयोग कर गणित आसान बनाने के लिए है, इसलिए अपने संख्या अत्यंत थोड़ा दूर नाव समस्या गोलाई के कारण हो सकता है, लेकिन आप 3 अंक के लिए परिणाम गोलाई कर रहे हैं वैसे भी, और प्रोसेसर समय में मामूली उतार चढ़ाव फ्लोटिंग पॉइंट त्रुटियों से भी अधिक है, इसलिए यह आपके लिए कई स्तरों पर समस्या नहीं है।

3

अच्छी तरह से phpmyadmin इस तरह के एक कोड का उपयोग करने के लिए इस तरह के एक कोड का उपयोग करता है। यह आपकी आवश्यकताओं के समान है:

//time before 
list($usec, $sec) = explode(' ',microtime($starttime)); 
$querytime_before = ((float)$usec + (float)$sec); 
/* your code */ 

//time after 
list($usec, $sec) = explode(' ',microtime($endtime)); 
$querytime_after = ((float)$usec + (float)$sec); 
$querytime = $querytime_after - $querytime_before; 

मुझे लगता है कि यह आपके लिए काम करना चाहिए। आपको बस अपना आउटपुट प्रारूप

समझना होगा
संबंधित मुद्दे