J'essaie d'obtenir une date qui est d'un an à partir de la date que je précise.
Mon code ressemble à ceci:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Il renvoie la mauvaise date. Des idées pourquoi?
J'essaie d'obtenir une date qui est d'un an à partir de la date que je précise.
Mon code ressemble à ceci:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Il renvoie la mauvaise date. Des idées pourquoi?
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"));
$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!
$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));
,
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;
//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 :)
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.php
Si vous voulez juste la date d'aujourd'hui, vous pouvez toujours faire:
new \DateTimeImmutable('-1 Month');
strtotime()
est de retour 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 que strtotime()
la sortie n'est pas bool(false)
avant de la pousser dans d'autres fonctions.
Valeurs de retour
Renvoie un horodatage en cas de succès, FALSE sinon. Avant PHP 5.1.0, cette fonction renverrait -1 en cas d'échec.
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."";
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);