J'ai le code suivant:
$dStart = new DateTime('2013-03-15'); $dEnd = new DateTime('2013-04-01'); $dDiff = $dStart->diff($dEnd); echo $dDiff->days;
5 Réponses :
Essayez comme ou selon votre code, essayez avec p> si vous voulez différer en jours, essayez avec cela aussi p>
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?
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
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');
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
Je préfère quelque chose comme:
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 code>, réinitialisation
d code> retour à 0. Actuellement, vous doit I> utiliser
$ intervalle-> format (" a ') code> 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.
J'ai eu les mêmes 6015 jours sur PHP 5.3.0 et j'ai trouvé la solution à l'aide de maintenant si je fais un var_dump () code>.
Mon code exact est ici:
var_dump ($ intervalle) code>, le résultat est le suivant: p>
echo (string) $interval->d." days ago";
Que se passe-t-il si vous compensez la date d'un? Essayez
2013-03-16 code> et
2013-04-02 code>, 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.