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-03Cependant, 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.
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
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