Tenho uma variável chamada $effectiveDate
contendo a data 26/03/2012 .
Estou tentando adicionar três meses a esta data e não tenho tido sucesso nisso.
Aqui está o que tentei:
$effectiveDate = strtotime("+3 months", strtotime($effectiveDate));
e
$effectiveDate = strtotime(date("Y-m-d", strtotime($effectiveDate)) . "+3 months");
O que estou fazendo errado? Nenhum pedaço de código funcionou.
1340649000
resposta, o que parece correto.$effectiveDate
que armazena o que acha que armazena? Isso funciona para mim .date('Y-m-d', 1340661600)
dá2012-06-26
qual é o correto.Respostas:
Altere-o para obter o formato esperado:
$effectiveDate = date('Y-m-d', strtotime("+3 months", strtotime($effectiveDate)));
fonte
"+ '$months' months"
não funciona$offset = 5; echo date('Y-m-d', strtotime("+$offset months", strtotime('2000-01-01')));
DemoEsta resposta não é exatamente para esta pergunta. Mas vou adicionar isso, pois esta questão ainda pode ser pesquisada sobre como adicionar / deduzir o período a partir da data.
$date = new DateTime('now'); $date->modify('+3 month'); // or you can use '-90 day' for deduct $date = $date->format('Y-m-d h:i:s'); echo $date;
fonte
Presumo que por "não funcionou" você quer dizer que está fornecendo um carimbo de data / hora em vez da data formatada, porque você estava fazendo isso corretamente:
$effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); // returns timestamp echo date('Y-m-d',$effectiveDate); // formatted version
fonte
Você precisa converter a data em um valor legível. Você pode usar strftime () ou date ().
Experimente isto:
$effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); $effectiveDate = strftime ( '%Y-%m-%d' , $effectiveDate ); echo $effectiveDate;
Isso deve funcionar. Eu gosto mais de usar o strftime, pois ele pode ser usado para localização, você pode tentar.
fonte
A resposta de Tchoupi pode ser um pouco menos prolixa concatenando o argumento para strtotime () da seguinte maneira:
$effectiveDate = date('Y-m-d', strtotime($effectiveDate . "+3 months") );
(Isso depende de detalhes mágicos de implementação, mas você sempre pode dar uma olhada neles se estiver com razão.
fonte
O seguinte deve funcionar, por favor, tente isto:
$effectiveDate = strtotime("+1 months", strtotime(date("y-m-d"))); echo $time = date("y/m/d", $effectiveDate);
fonte
Seguir deve funcionar
$d = strtotime("+1 months",strtotime("2015-05-25")); echo date("Y-m-d",$d); // This will print **2015-06-25**
fonte
Adicione enésimos dias, meses e anos
$n = 2; for ($i = 0; $i <= $n; $i++){ $d = strtotime("$i days"); $x = strtotime("$i month"); $y = strtotime("$i year"); echo "Dates : ".$dates = date('d M Y', "+$d days"); echo "<br>"; echo "Months : ".$months = date('M Y', "+$x months"); echo '<br>'; echo "Years : ".$years = date('Y', "+$y years"); echo '<br>'; }
fonte
O seguinte deve funcionar, mas pode ser necessário alterar o formato:
echo date('l F jS, Y (m-d-Y)', strtotime('+3 months', strtotime($DateToAdjust)));
fonte