Estou tentando obter uma data que seja um ano a partir da data que especificar.
Meu código é parecido com este:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Ele está retornando na data errada. Alguma ideia por quê?
Estou tentando obter uma data que seja um ano a partir da data que especificar.
Meu código é parecido com este:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Ele está retornando na data errada. Alguma ideia por quê?
Respostas:
Para adicionar um ano à data de hoje, use o seguinte:
$oneYearOn = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 365 day"));
Para os outros exemplos, você deve inicializar $ StartingDate com um valor de carimbo de data / hora, por exemplo:
$StartingDate = mktime(); // todays date as a timestamp
Tente isto
$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 é daqui a um ano!
$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );
$ futureDate é um ano a partir de $ startDate!
$futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
como K Prime mencionado abaixo.
Tentar: $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
,
para o qual mudei .
e funcionou 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'));
espero que este código mais simples ajude alguém no futuro :)
Eu prefiro a abordagem OO:
$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.
$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))
Use, DateTimeImmutable
caso contrário, você modificará a data original também! mais sobre DateTimeImmutable: http://php.net/manual/en/class.datetimeimmutable.php
Se você quer apenas a partir da data de hoje, você sempre pode fazer:
new \DateTimeImmutable('-1 Month');
strtotime()
está retornando bool(false)
, porque ele não pode analisar a string '+one year'
(ele não entende "um"). false
está sendo implicitamente convertido para o integer
carimbo de data / hora 0
. É uma boa ideia verificar se strtotime()
a saída de não está bool(false)
antes de você colocá-la em outras funções.
Valores Retornados
Retorna um timestamp em caso de sucesso, FALSE caso contrário. Anterior ao PHP 5.1.0, esta função retornava -1 em caso de falha.
Também existe uma solução mais simples e menos sofisticada:
$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";
Minha solução é: date('Y-m-d', time()-60*60*24*365);
Você pode torná-lo mais "legível" com definições:
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);