J'essaie d'obtenir une date correspondant à un an à compter de la date que je précise.
Mon code ressemble à ceci:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Ça retourne la mauvaise date. Des idées pourquoi?
Pour ajouter une année à 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"));
$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 dans un an à partir de $ startDate!
Essayez: $futureDate=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;
vient d'avoir le même problème, cependant c'était la solution la plus simple:
<?php (date('Y')+1).date('-m-d'); ?>
//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'));
espérons que ce morceau de code plus simple aidera quelqu'un à l'avenir :)
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'))
Utilisez DateTimeImmutable
sinon vous modifierez aussi la date d'origine! plus sur DateTimeImmutable: http://php.net/manual/en/class.datetimeimmutable.php
Si vous voulez juste à partir de la date d'aujourd'hui, vous pouvez toujours faire:
new \DateTimeImmutable('-1 Month');
Si vous utilisez PHP 5.3, c’est parce que vous devez définir le fuseau horaire par défaut:
date_default_timezone_set()
strtotime()
renvoie bool(false)
, car il ne peut pas analyser la chaîne '+one year'
(il ne comprend pas "un"). false
est alors implicitement converti en integer
horodatage 0
. C'est une bonne idée de vérifier la sortie de strtotime()
n'est pas bool(false)
avant de la déplacer dans d'autres fonctions.
Valeurs de retour
Renvoie un horodatage en cas de succès, FALSE sinon. Avant de PHP 5.1.0, cette fonction renverrait -1 en cas d'échec.
Essaye ça
$nextyear = date("M d,Y",mktime(0, 0, 0, date("m",strtotime($startDate)), date("d",strtotime($startDate)), date("Y",strtotime($startDate))+1));
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."";