Disons que j'ai une date au format suivant: 2010-12-11 (année-lun-jour)
Avec PHP, je souhaite incrémenter la date d'un mois, et je souhaite que l'année soit automatiquement incrémentée, si nécessaire (c'est-à-dire incrémentée de décembre 2012 à janvier 2013).
Cordialement.
J'avais besoin de fonctionnalités similaires, sauf pour un cycle mensuel (plus des mois, moins 1 jour). Après avoir cherché SO pendant un certain temps, j'ai pu créer cette solution plug-n-play:
Exemple:
la source
Utilisez
DateTime::add
.J'ai utilisé le clone car add modifie l'objet d'origine, ce qui n'est peut-être pas souhaité.
la source
cela renvoie un horodatage qui peut être utilisé avec la fonction de date
la source
$time
a une valeur initiale).Cela compensera février et les 31 autres jours. Vous pouvez bien sûr faire beaucoup plus de vérifications pour être plus précis pour les formats de date relatifs `` ce jour-là le mois prochain '' (ce qui ne fonctionne malheureusement pas, voir ci-dessous), et vous pouvez tout aussi bien utiliser DateTime.
Les deux
DateInterval('P1M')
etstrtotime("+1 month")
sont essentiellement aveuglément ajouter 31 jours quel que soit le nombre de jours dans le mois suivant.la source
Vous pouvez utiliser
DateTime::modify
comme ceci:Voir les documentations:
http://php.net/manual/fr/datetime.modify.php
http://php.net/manual/fr/class.datetime.php
la source
J'utilise de cette façon: -
la source
Veuillez d'abord définir votre format de date comme 12-12-2012
Après avoir utilisé cette fonction, elle fonctionne correctement;
Ici 12-12-2012 est votre date et +2 mois est l'incrément du mois;
Vous incrémentez également l'année, la date
Ans est 12-12-2013
la source
Merci Jason, votre message a été très utile. Je l'ai reformaté et ajouté d'autres commentaires pour m'aider à tout comprendre. Au cas où cela aiderait quelqu'un, je l'ai publié ici:
la source
Si vous souhaitez incrémenter de jours, vous pouvez également le faire
la source
Il suffit de mettre à jour la réponse avec une méthode simple pour trouver la date après plusieurs mois. Comme la meilleure réponse indiquée ne donne pas la bonne solution.
la source
Exemples d'utilisation:
la source
Pour tous ceux qui recherchent une réponse à n'importe quel format de date.
Changez simplement le format de la date.
la source
mettre une date dans la zone de saisie puis cliquez sur le bouton obtenir le jour de la date dans jquery
la source
la source
Toutes les solutions présentées ne fonctionnent pas correctement.
strtotime () et DateTime :: add ou DateTime :: modify donnent parfois des résultats invalides.
Exemples:
- 31.08.2019 + 1 mois donne 01.10.2019 au lieu du 30.09.2019
- 29.02.2020 + 1 an donne 01.03.2021 au lieu du 28.02.2021
(testé sur PHP 5.5, PHP 7.3)
Voici ma fonction basée sur une idée publiée par Angelo qui résout le problème:
Exemples d'utilisation:
la source