L'ajout de "+365" au lieu de "+1 an" l'a fait. Merci!
Matt
16
Cela ne ferait-il pas une pause en cas d'année bissextile?
Jeremy1026
1
Depuis PHP 5.1, lorsqu'il est appelé sans argument, mktime () lance un avis E_STRICT: utilisez la fonction time () à la place.
svandragt
Voté ici aussi. Le nombre de secondes dans une journée, de jours dans une année, de secondes dans une année, etc. sont tous variables. Si vous êtes intéressé par «dans un an», vous devez passer dans un intervalle de «un an». La subdivision par vous-même est ce qui conduit à des erreurs autour des jours bissextiles et des secondes intercalaires et des changements d'heure d'été. Pire encore, cela provoque des tests unitaires flappy.
drobert
pourquoi ma réponse est déclinée ?? $ addedoneyear = date ("y") + 1; // pour avoir ajouté un an, qu'est-ce qui ne va pas avec ça?
Veuillez noter que si $ startDate est déjà un horodatage (comme celui créé plus tôt avec la fonction time () ou mktime ()) et non une chaîne, vous ne devriez pas l'envelopper dans strtotime ou cela ne fonctionnera pas. Au lieu de cela, faites $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));comme K Prime mentionné ci-dessous.
Bien que cela renvoie la bonne réponse, l'autre ne renvoie pas non plus d'erreur ... juste la mauvaise date.
SeanJA
1
strtotime ne renvoie pas d'erreurs. Il renvoie false en cas d'erreur.
Frank Farmer
PHP lancera des avertissements si le fuseau horaire par défaut n'est pas défini ... bien qu'apparemment ce n'est pas ce qu'il voulait dire
SeanJA
Je devenais erreur sur votre code je l' ai changé ,pour .et cela a fonctionné date("Y-m-d",strtotime('+1 year '.$startDate));
Muhammad Bilal le
7
// Declare a variable for this year
$this_year = date("Y");
// Add 1 to the variable
$next_year = $this_year + 1;
$year_after = $this_year + 2;
// Check your codeecho"This year is ";
echo $this_year;
echo"<br />";
echo"Next year is ";
echo $next_year;
echo"<br />";
echo"The year after that is ";
echo $year_after;
strtotime()est de retour bool(false), car il ne peut pas analyser la chaîne '+one year'(il ne comprend pas "un"). falseest alors implicitement converti en integerhorodatage 0. C'est une bonne idée de vérifier que strtotime()la sortie n'est pas bool(false)avant de la pousser dans d'autres fonctions.
Ouais, bon point. Mon code de production l'aura, mais je m'arrachais les cheveux en essayant de faire fonctionner cela, alors je l'ai réduit au minimum de code. Merci!
Il existe également une solution plus simple et moins sophistiquée:
$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";
Réponses:
Pour ajouter un an à la date d'aujourd'hui, utilisez ce qui suit:
$oneYearOn = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 365 day"));
Pour les autres exemples, vous devez initialiser $ StartingDate avec une valeur d'horodatage par exemple:
$StartingDate = mktime(); // todays date as a timestamp
Essaye ça
$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 365 day"));
ou
$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 1 year"));
la source
$futureDate=date('Y-m-d', strtotime('+1 year'));
$ futureDate est dans un an!
$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );
$ futureDate est un an à partir du $ startDate!
la source
$futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
comme K Prime mentionné ci-dessous.Essayer:
$futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
la source
,
pour.
et cela a fonctionnédate("Y-m-d",strtotime('+1 year '.$startDate))
;// Declare a variable for this year $this_year = date("Y"); // Add 1 to the variable $next_year = $this_year + 1; $year_after = $this_year + 2; // Check your code echo "This year is "; echo $this_year; echo "<br />"; echo "Next year is "; echo $next_year; echo "<br />"; echo "The year after that is "; echo $year_after;
la source
avait juste le même problème, mais c'était la solution la plus simple:
<?php (date('Y')+1).date('-m-d'); ?>
la source
$next_year = (date('Y')+1)
.//1 year from today's date echo date('d-m-Y', strtotime('+1 year')); //1 year from from specific date echo date('22-09-Y', strtotime('+1 year'));
J'espère que ce morceau de code plus simple aidera quelqu'un à l'avenir :)
la source
Je préfère l'approche OO:
$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time. $futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))
À utiliser
DateTimeImmutable
sinon vous modifierez aussi la date d'origine! plus sur DateTimeImmutable: http://php.net/manual/en/class.datetimeimmutable.phpSi vous voulez juste la date d'aujourd'hui, vous pouvez toujours faire:
new \DateTimeImmutable('-1 Month');
la source
Si vous utilisez PHP 5.3, c'est parce que vous devez définir le fuseau horaire par défaut:
la source
strtotime()
est de retourbool(false)
, car il ne peut pas analyser la chaîne'+one year'
(il ne comprend pas "un").false
est alors implicitement converti eninteger
horodatage0
. C'est une bonne idée de vérifier questrtotime()
la sortie n'est pasbool(false)
avant de la pousser dans d'autres fonctions.À partir de la documentation:
la source
Essaye ça
$nextyear = date("M d,Y",mktime(0, 0, 0, date("m",strtotime($startDate)), date("d",strtotime($startDate)), date("Y",strtotime($startDate))+1));
la source
Il existe également une solution plus simple et moins sophistiquée:
$monthDay = date('m/d'); $year = date('Y')+1; $oneYearFuture = "".$monthDay."/".$year.""; echo"The date one year in the future is: ".$oneYearFuture."";
la source
Ma solution est:
date('Y-m-d', time()-60*60*24*365);
Vous pouvez le rendre plus "lisible" avec définit:
define('ONE_SECOND', 1); define('ONE_MINUTE', 60 * ONE_SECOND); define('ONE_HOUR', 60 * ONE_MINUTE); define('ONE_DAY', 24 * ONE_HOUR); define('ONE_YEAR', 365 * ONE_DAY); date('Y-m-d', time()-ONE_YEAR);
la source
Dans mon cas (je veux ajouter 3 ans à la date actuelle), la solution était:
$future_date = date('Y-m-d', strtotime("now + 3 years"));
À Gardenee, Treby et Daniel Lima: que se passera-t-il avec le 29 février? Parfois, février ne compte que 28 jours :)
la source