No olvide ocuparse de la cuestión semántica de lo que quiere decir con "un año" con años bisiestos. Restar 365 días de 2008-02-28 le dará 2007-02-28, mientras que restar 365 días de 2008-02-29 le dará 2007-03-31.
HostileFork dice que no confíes en SE
Supongo que depende mucho de lo que signifique "restar un año". Podría referirse al mismo mes y día pero un año antes o el mes y día después de restar 365 días como señala Hostile.
// 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);
Respuestas:
Puede utilizar
strtotime
:La
strtotime
función devuelve una marca de tiempo de Unix, para obtener una cadena formateada que puede usardate
:fuente
Utilice la función strtotime ():
fuente
Usando el objeto DateTime ...
O usar ahora por hoy
fuente
una forma más fácil que usé y funcionó bien
esto funcionó perfecto .. espero que esto ayude a alguien más también .. :)
fuente
fuente
En mi sitio web, para comprobar si el registro de personas tiene 18 años , simplemente utilicé lo siguiente:
Después, solo compare las dos fechas.
Espero que pueda ayudar a alguien.
fuente
Aunque hay muchas respuestas aceptables en respuesta a esta pregunta, no veo ningún ejemplo del
sub
método que usa el\Datetime
objeto: https://www.php.net/manual/en/datetime.sub.phpEntonces, como referencia, también puede usar a
\DateInterval
para modificar un\Datetime
objeto:Que devuelve:
Para obtener más información sobre
\DateInterval
, consulte la documentación: https://www.php.net/manual/en/class.dateinterval.phpfuente
Puede utilizar la siguiente función para restar 1 o cualquier año de una fecha.
Y mirando los ejemplos anteriores, también puede usar lo siguiente
fuente