"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi DateTime :: Modify de PHP («+ 1 mois») produit-il des résultats inattendus?

Pourquoi DateTime :: Modify de PHP («+ 1 mois») produit-il des résultats inattendus?

Publié le 2025-03-28
Parcourir:553

Why Does PHP's DateTime::modify(' 1 month') Produce Unexpected Results?

Modification des mois avec PHP DateTime: Découvrir le comportement prévu

Lorsque vous travaillez avec la classe DateTime de Php, l'ajout ou la soustraction des mois peut ne pas toujours donner les résultats attendus. Comme la documentation met en garde, "Méfiez-vous" de ces opérations, car elles ne sont pas aussi intuitives qu'elles peuvent paraître. $ date-> modifier ('1 mois'); // avance de 1 mois echo $ date-> format ('y-m-d'). "\ n"; // imprime 2001-01-31 $ date-> modifier ('1 mois'); // avance un autre mois echo $ date-> format ('y-m-d'). "\ n"; // imprime 2001-03-03

plutôt que d'incrémenter le mois comme prévu, le résultat est un saut au 3 mars. Pourquoi cela? Voici ce qui se passe en interne:

ajoutant 1 mois augmente le numéro de mois par 1, ce qui entraîne le 31 décembre 2001.
$date = new DateTime('2000-12-31');
$date->modify(' 1 month'); // Move ahead by 1 month
echo $date->format('Y-m-d') . "\n"; // Prints 2001-01-31

$date->modify(' 1 month'); // Advance another month
echo $date->format('Y-m-d') . "\n"; // Prints 2001-03-03
Cependant, en décembre n'a que 31 jours, et il n'y a pas de 31e jour de janvier.

En tant que résultat, PHP n'ajuste automatiquement la date de la date de la date de la date de la date de la date. 1er février

Ajouter un autre mois maintenant le 3 mars, car février n'a que 28 jours en 2001.
  1. Obtention du comportement attendu
  2. Options:

Calcul manuel: Vérifiez le nombre de jours le mois prochain et ajustez manuellement la date en conséquence. Exemple:

$ d = new DateTime ('2010-01-31'); $ d-> modifier («premier jour du mois prochain»); Echo $ d-> format ('f'), "\ n"; // imprime correctement février

  1. Conclusion
  2. Comprendre le comportement prévu des opérations modifiant le mois de Datetime est cruciale pour éviter les résultats inattendus. En utilisant le calcul manuel ou la fonctionnalité "premier jour du mois prochain", vous pouvez atteindre la fonctionnalité de manipulation de la date souhaitée dans vos applications PHP.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3