J'ai écrit ce morceau de code afin d'afficher la date actuelle + 2 mois:
<?php
$date = date("d/m/Y");
$date = strtotime(date("d/m/Y", strtotime($date)) . "+2 months");
$date = date("d/m/Y",$date);
echo $date;
?>
Il ne semble pas fonctionner comme il s'affiche: 01/03/1970.
Qu'est-ce que je fais mal?
Merci de votre aide.
ÉDITER :
Après avoir lu les commentaires et les réponses, je l'ai simplifié et corrigé.
<?php
$date = date("d/m/Y", strtotime(" +2 months"));
echo $date;
?>
Il vous manque le deuxième argument pour le deuxième appel de strtotime()
:
echo date('d/m/Y', strtotime('+2 months'));
Essayez d'utiliser objet DateTime :
$date = new DateTime("+2 months");
echo $date->format("d/m/Y");
Si aujourd'hui est "AAAA-mm-31" et que le mois suivant n'a pas le 31ème jour, il affichera le mois suivant de ce jour, faire afficher par le système le résultat "+3 mois" au lieu du résultat "+2 mois".
Donc je suppose que c'est le plus de sécurité:
$end_date=date("Y-m-d",strtotime("+2 month",strtotime(date("Y-m-01",strtotime("now") ) )));
Modifiez d'abord la date au 1er jour.
Utiliser DateTime-> add () ou DateTime-> modifier ()
Si vous travaillez avec un objet DateTime existant, vous pouvez utiliser l'un de ces éléments:
// Your date
$date = new DateTime(); // empty for now or pass any date string as param
// Adding
$date->add(new DateInterval('P2M')); // where P2M means "plus 2 months"
// or even easier
$date->modify('+2 months');
// Checking
echo $date->format('Y-m-d');
Attention à l'ajout de mois en PHP, il peut déborder au mois suivant si le jour de la date d'origine est supérieur au nombre total de jours dans le nouveau mois. Le même débordement se produit avec les années bissextiles lors de l'ajout d'années. D'une certaine manière, cela n'est pas considéré comme un bogue par les développeurs PHP et est simplement documenté sans solution. Plus ici: PHP DateTime :: modifier l'ajout et la soustraction de mois
J'ai trouvé que c'était la solution la plus pertinente pour résoudre le problème de débordement:
$day = $date->format('j');
$date->modify('first day of +2 months')->modify('+'. (min($day, $date->format('t')) - 1) .' days');