J'essaie d'utiliser sa ne fonctionne pas pour moi, donne une erreur: p> date_diff () code>:
Call to undefined function date_diff()
5 Réponses :
La fonction Date_Diff nécessite une version PHP de 5,3 ou plus.
update strong> p> Exemple de PHP 5.2 (tiré des commentaires de l'utilisateur Date_Diff). P > <?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 \>");
?>
Toute façon de l'utiliser sur PHP 5.2?
Cette solution est très inefficace
Vous avez demandé comment obtenir date_diff travailler, j'ai répondu avec la réponse claire de vous ne pouvez pas et proposer une solution simple, qui est venue directement des commentaires de l'utilisateur pour Date_Diff, je l'ai simplement copié la collée. Il existe de nombreuses façons de faire face à la question. Soustrayez les deux valeurs strtotime et la divisant par les bons segments serait une autre solution. Si vous voulez un moyen simple, mettez à niveau PHP.
Voici une version qui n'utilise pas d'objets de date, mais celles-ci ne sont pas utilisées de toute façon en 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)); }
Je ne recommanderais pas d'utiliser cette approche car il ne considère pas possible les changements d'heure d'été: ini_set ('date.timezone', 'America / Los_Angeles'); écho _date_diff ('2011-03-13', '2011-03-14'); >> 0
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; }
S'il vous plaît expliquer votre réponse.
Convertissez d'abord les deux dates au format mm / dd / aaaa, puis faites ceci:
$DateDiff = floor( strtotime($datetime2 ) - strtotime( $datetime1 ) ) / 86400 ; //this will yield the resultant difference in days
Grande solution sqlchild
@Jonmatthews: merci beaucoup monsieur, mon plaisir
Conversion de votre DateTime en type de date UNIX et soustrayez-en un d'un autre: Le format -> ("u") est l'endroit où la dateTime est convertie.
$datetime1 = date_create('19.03.2010'); $datetime2 = date_create('22.04.2010'); $intervalInDays = ($datetime2->format("U") - $datetime1->format("U"))/(3600 * 24);