Não se esqueça de cuidar da questão semântica do que você entende por "um ano" em vez de anos bissextos. Subtraindo 365 dias de 28/02/2008 resultará em 28/02/2007, enquanto subtraindo 365 dias de 29/02/2008 resultará em 31/03/2007.
HostileFork diz não confie em SE
Eu acho que depende muito do que significa "subtrair um ano". Você poderia significar o mesmo mês e dia, mas um ano antes ou o mês e dia após a subtração de 365 dias, conforme Hostile aponta.
// set your date here
$mydate ="2009-01-01";/* strtotime accepts two parameters.
The first parameter tells what it should compute.
The second parameter defines what source date it should use. */
$lastyear = strtotime("-1 year", strtotime($mydate));// format and display the computed date
echo date("Y-m-d", $lastyear);
Respostas:
Você pode usar
strtotime
:A
strtotime
função retorna um carimbo de data / hora Unix, para obter uma string formatada que você pode usardate
:fonte
Use a função strtotime ():
fonte
Usando o objeto DateTime ...
Ou usando agora por hoje
fonte
uma maneira mais fácil que usei e funcionei bem
funcionou perfeitamente .. espero que isso ajude outra pessoa também .. :)
fonte
fonte
No meu site, para verificar se o cadastro de pessoas tem 18 anos , usei simplesmente o seguinte:
Depois, compare apenas as duas datas.
Espero que possa ajudar alguém.
fonte
Embora existam muitas respostas aceitáveis em resposta a esta pergunta, não vejo nenhum exemplo do
sub
método usando o\Datetime
objeto: https://www.php.net/manual/en/datetime.sub.phpPortanto, para referência, você também pode usar um
\DateInterval
para modificar um\Datetime
objeto:Que retorna:
Para obter mais informações sobre
\DateInterval
, consulte a documentação: https://www.php.net/manual/en/class.dateinterval.phpfonte
Você pode usar a seguinte função para subtrair 1 ou quaisquer anos de uma data.
E olhando para os exemplos acima, você também pode usar o seguinte
fonte