Undefined date_diff ()

I am trying to use 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'); 

Its not working for me, gives an error:

 Call to undefined function date_diff() 

How can I make it work?

Used by PHP 5.2.

Thanks.

+7
php datediff
source share
5 answers

The date_diff function requires PHP version 5.3 or higher.

UPDATE

An example for PHP 5.2 (taken from the comments of the user date_diff).

 <?php function date_diff($date1, $date2) { $current = $date1; $datetime2 = date_create($date2); $count = 0; while(date_create($current) < $datetime2){ $current = gmdate("Ymd", strtotime("+1 day", strtotime($current))); $count++; } return $count; } echo (date_diff('2010-3-9', '2011-4-10')." days <br \>"); ?> 
+12
source share

Here is a version that does not use Date objects, but that does not make any difference in 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)); } 
+1
source share
 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("Ymd",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("Ymd",strtotime("+1 day", strtotime($current))); $count++; } $current = $current * -1; } return $count; } 
+1
source share

Convert both dates to mm / dd / yyyy format first, then do the following:

  $DateDiff = floor( strtotime($datetime2 ) - strtotime( $datetime1 ) ) / 86400 ; //this will yield the resultant difference in days 
0
source share

Converting a DateTime date to a Unix date type and subtracting one from the other: Format → ("U") is where DateTime is converted.

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

Not sure if this is a secure Y2K38, but this is one of the easiest workarounds for date_diff.

0
source share

All Articles