8
votes

Différence de date PHP

J'ai le code suivant:

$dStart = new DateTime('2013-03-15');
$dEnd = new DateTime('2013-04-01');
$dDiff = $dStart->diff($dEnd);
echo $dDiff->days;


4 commentaires

Que se passe-t-il si vous compensez la date d'un? Essayez 2013-03-16 et 2013-04-02 , par exemple.


Si je mets 2013-03-16 et 2013-04-02, j'ai la même valeur 6015


J'ai trouvé de rapport de bug # 51184 bugs.php.net/bug.php?id= 51184


Évidemment, vous ne pouvez pas en ce moment, mais dès que vous pouvez, vous devez la mettre comme une réponse et la marquer comme le correct.


5 Réponses :


4
votes

Essayez comme xxx

ou selon votre code, essayez avec xxx

si vous voulez différer en jours, essayez avec cela aussi xxx


3 commentaires

C'est de retour "01:01:00" Je m'attends à faire la différence en jours entre 2 dates


@ Gautamd3164 Voir le commentaire sur la réponse de Haralan Dobrev ci-dessous. Peut être la peine d'être modifié la réponse aux futurs lecteurs


Hey pouvez-vous me dire la raison de le descendre?



3
votes

Essayez ceci- xxx

check PHP

Vérifiez Demo Link


3 commentaires

Il renvoie +6015 jours aussi il doit s'agir d'une version PHP Bug


@Carlosduarte: Mise à jour de la poste et du lien Ajout pour phpfiddle: phpfiddle.org/main/code/7dq-mb7


Dans cet exemple, vous ajoutez n'importe quelle date ... Dites le changer à 2015, il retourne 17 jours toujours



1
votes

Utilisez cette

 $datetime1 = date_create('2013-03-15');
 $datetime2 = date_create('2013-04-01');
 $interval = date_diff($datetime1, $datetime2);
 echo $interval->format('%R%a days');


6 commentaires

Il retourne +6015 jours pourrait être un bug PHP? PHP version 5.3.1


Peut-être que cela retourne une erreur pour votre version PHP. J'ai testé et cela retourne +17 jours.


Je ne peux pas comprendre ce qui se passe avec PHP, si j'échène (1363305600 - 1364857200) / (60 * 60 * 24) Il renvoie -a95833333333333


Pouvez-vous me faire savoir quelle version de PHP que vous utilisez? Parce que c'est renvoie la valeur correcte I.E. -17.958333333333 dans ma version locale et cela devrait être.


@Tapaspal: Veuillez élaborer "ma version locale". Quelle version? Pour moi, cela donne toujours "+6015 jours" sur PHP 5.3.0. Consultez ma solution comment je l'ai eu.


@Zeeshan, j'utilise php 5.2



1
votes

Je préfère quelque chose comme: xxx


3 commentaires

Oui, c'est la seule solution qui fonctionne à PHP version 5.3.1


Cela ne fonctionnera pas si la différence est supérieure à 1 mois. La dateInterval va rouler et incrémenter m , réinitialisation d retour à 0. Actuellement, vous doit utiliser $ intervalle-> format (" a ') pour obtenir le nombre total de jours entre deux jours (si vous prévoyez que la gamme étant supérieure à 1 mois)


@ColinMorelli merci! J'ai appliqué la modification. J'utilisais cette fonction sans problème, mais mon cas était toujours dans un mois.



0
votes

J'ai eu les mêmes 6015 jours sur PHP 5.3.0 et j'ai trouvé la solution à l'aide de var_dump () code>. Mon code exact est ici: xxx pré>

maintenant si je fais un var_dump ($ intervalle) code>, le résultat est le suivant: p>

echo (string) $interval->d." days ago";


0 commentaires