J'apprends toujours PHP et j'essaie de m'améliorer en programmation PHP. Donc, je teste un code simple qui montre la durée entre deux dates. Je le teste avec des dates de début et de fin différentes jusqu'à ce que celle-ci ait la mauvaise durée.

Code:

<?php
$d1 = new DateTime('2017-02-20'); // 20 Feb 2017
$d2 = new DateTime('2017-05-12'); // 12 May 2017

$diff = $d2->diff($d1); //excluding end date

echo $diff->y ." years "; 
echo $diff->m ." months ";
echo $diff->d ." days";
?>

La durée correcte était censée être de 0 an 2 mois 22 jours. Mais il a affiché une durée incorrecte qui est de 0 an 2 mois 20 jours .

Quelqu'un peut-il m'expliquer pourquoi? Je veux savoir quelle est la raison pour laquelle c'est devenu comme ça.

0
Hazirah_Halim 4 avril 2017 à 07:28

2 réponses

Meilleure réponse

Corrigez le code ici:

$d1 = new DateTime('2017-02-20'); // 20 Feb 2017
$d2 = new DateTime('2017-05-12'); // 12 May 2017

$diff = $d1->diff($d2); //excluding end date

echo $diff->y ." years "; 
echo $diff->m ." months ";
echo $diff->d ." days";

Déduisez toujours d'une date plus élevée à une date inférieure.

0
Gaurav 4 avril 2017 à 04:34

Vous devez différencier $ d1 à $ d2

$d1 = new DateTime('2017-02-20');
$d2 = new DateTime('2017-05-12');
$diff = $d1->diff($d2); // differentiate $d1 (datetime1) to $d2 (datetime2)

echo $diff->y ." years "; 
echo $diff->m ." months ";
echo $diff->d ." days";

http://php.net/manual/en/datetime.diff.php

Vous pouvez également essayer la méthode procédurale.

$d1 = date_create('2017-02-20');
$d2 = date_create('2017-05-12');
$diff = date_diff($d1, $d2); // differentiate $d1 (datetime1) to $d2 

echo $diff->y ." years "; 
echo $diff->m ." months ";
echo $diff->d ." days";
-1
cletsimon 4 avril 2017 à 04:54