Sto cercando di ottenere una data che sia un anno dalla data specificata.
Il mio codice ha questo aspetto:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Restituisce la data sbagliata. Qualche idea sul perché?
Sto cercando di ottenere una data che sia un anno dalla data specificata.
Il mio codice ha questo aspetto:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Restituisce la data sbagliata. Qualche idea sul perché?
Risposte:
Per aggiungere un anno alla data odierna, utilizzare quanto segue:
$oneYearOn = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 365 day"));
Per gli altri esempi devi inizializzare $ StartingDate con un valore timestamp, ad esempio:
$StartingDate = mktime(); // todays date as a timestamp
Prova questo
$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 365 day"));
o
$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 1 year"));
$futureDate=date('Y-m-d', strtotime('+1 year'));
$ futureDate tra un anno!
$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );
$ futureDate è di un anno da $ startDate!
$futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
come K Prime menzionato di seguito.
Provare: $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
,
a .
ed ha funzionato 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'));
spero che questo bit di codice più semplice aiuti qualcuno in futuro :)
Preferisco l'approccio OO:
$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.
$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))
Usa DateTimeImmutable
altrimenti modificherai anche la data originale! altro su DateTimeImmutable: http://php.net/manual/en/class.datetimeimmutable.php
Se vuoi solo la data di oggi, puoi sempre fare:
new \DateTimeImmutable('-1 Month');
strtotime()
sta restituendo bool(false)
, perché non può analizzare la stringa '+one year'
(non comprende "uno"). false
viene quindi cast implicitamente al integer
timestamp 0
. È una buona idea verificare che strtotime()
l'output di non sia bool(false)
prima di inserirlo in altre funzioni.
Valori restituiti
Restituisce un timestamp in caso di successo, FALSE in caso contrario. Prima di PHP 5.1.0, questa funzione restituiva -1 in caso di errore.
C'è anche una soluzione più semplice e meno sofisticata:
$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";
La mia soluzione è: date('Y-m-d', time()-60*60*24*365);
Puoi renderlo più "leggibile" con le definizioni:
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);