2010-08-13 14 views
7

मैं date_diff() उपयोग करने के लिए कोशिश कर रहा हूँ:अपरिभाषित date_diff()

Call to undefined function date_diff() 

मैं कैसे यह काम प्राप्त कर सकते हैं:

$datetime1 = date_create('19.03.2010'); 
$datetime2 = date_create('22.04.2010'); 
$interval = date_diff($datetime1, $datetime2); 
echo $interval->format('%R%d days'); 

इसका मेरे लिए काम नहीं करता है, एक त्रुटि देता है?

PHP 5.2 का उपयोग किया जाता है।

धन्यवाद।

उत्तर

12

फ़ंक्शन date_diff को 5.3 या उससे अधिक के PHP संस्करण की आवश्यकता होती है।

अद्यतन

पीएचपी 5.2 के लिए एक उदाहरण (date_diff उपयोगकर्ता टिप्पणियों से लिया गया)।

<?php 
function date_diff($date1, $date2) { 
    $current = $date1; 
    $datetime2 = date_create($date2); 
    $count = 0; 
    while(date_create($current) < $datetime2){ 
     $current = gmdate("Y-m-d", strtotime("+1 day", strtotime($current))); 
     $count++; 
    } 
    return $count; 
} 

echo (date_diff('2010-3-9', '2011-4-10')." days <br \>"); 
?> 
+0

PHP 5.2 पर इसका उपयोग करने का कोई तरीका? – James

+0

एक भिन्नता जोड़ा गया। –

+7

यह समाधान बहुत अक्षम है – James

1

यहाँ एक संस्करण है कि दिनांक वस्तुओं का उपयोग नहीं करता है, लेकिन इन 5.2 में वैसे भी किसी काम का नहीं है।

function date_diff($d1, $d2){ 
    $d1 = (is_string($d1) ? strtotime($d1) : $d1); 
    $d2 = (is_string($d2) ? strtotime($d2) : $d2); 
    $diff_secs = abs($d1 - $d2); 
    return floor($diff_secs/(3600 * 24)); 
} 
+0

मैं इस दृष्टिकोण का उपयोग करने की अनुशंसा नहीं करता क्योंकि यह संभव डेलाइट सेविंग टाइम परिवर्तनों पर विचार नहीं करता है: ini_set ('date.timezone', 'America/Los_Angeles') ; echo _date_diff ('2011-03-13', '2011-03-14'); >> 0 –

1
function date_diff($date1, $date2) { 
$count = 0; 
//Ex 2012-10-01 and 2012-10-20 
if(strtotime($date1) < strtotime($date2)) 
{      
    $current = $date1;     
    while(strtotime($current) < strtotime($date2)){ 
     $current = date("Y-m-d",strtotime("+1 day", strtotime($current))); 
     $count++; 
    } 
}     
//Ex 2012-10-20 and 2012-10-01 
else if(strtotime($date2) < strtotime($date1)) 
{   
    $current = $date2;     
    while(strtotime($current) < strtotime($date1)){ 
     $current = date("Y-m-d",strtotime("+1 day", strtotime($current))); 
     $count++; 
    } 
    $current = $current * -1; 
} 
return $count; } 
+0

कृपया अपना उत्तर दें। – hims056

0

पहले dd/mm/yyyy प्रारूप करने के लिए दोनों तिथियां परिवर्तित तो ऐसा करते हैं:

$DateDiff = floor(strtotime($datetime2) - strtotime($datetime1))/86400 ; 

//this will yield the resultant difference in days 
0

यूनिक्स दिनांक प्रकार करने के लिए अपने दिनांक समय परिवर्तित, और एक अन्य से घटाने पर: प्रारूप > ("यू") वह जगह है जहां डेटटाइम परिवर्तित हो जाता है।

$datetime1 = date_create('19.03.2010'); 
$datetime2 = date_create('22.04.2010'); 
$intervalInDays = ($datetime2->format("U") - $datetime1->format("U"))/(3600 * 24); 

यह सुनिश्चित नहीं है कि यह वाई 2 के 38 सुरक्षित है लेकिन यह सबसे सरल डेट_डिफ वर्कअराउंड्स में से एक है।

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