Tengo una fecha en este formato:Fecha menos 1 año?
2009-01-01
¿Cómo puedo devolver la misma fecha, pero antes 1 año?
Tengo una fecha en este formato:Fecha menos 1 año?
2009-01-01
¿Cómo puedo devolver la misma fecha, pero antes 1 año?
Uso strtotime (función):
$time = strtotime("-1 year", time());
$date = date("Y-m-d", $time);
// 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);
Utilizando el objeto DateTime ...
$time = new DateTime('2099-01-01');
$newtime = $time->modify('-1 year')->format('Y-m-d');
O usando ahora para hoy
$time = new DateTime('now');
$newtime = $time->modify('-1 year')->format('Y-m-d');
una manera más fácil que he usado y funcionaba bien
date('Y-m-d', strtotime('-1 year'));
esto funcionó perfecto .. Espero que esto ayude a alguien más también ... :)
Puede usar el siguiente ng función para restar 1 o cualquier año de una fecha.
function yearstodate($years) {
$now = date("Y-m-d");
$now = explode('-', $now);
$year = $now[0];
$month = $now[1];
$day = $now[2];
$converted_year = $year - $years;
echo $now = $converted_year."-".$month."-".$day;
}
$number_to_subtract = "1";
echo yearstodate($number_to_subtract);
Y mirando ejemplos anteriores también se puede utilizar el
$user_age_min = "-"."1";
echo date('Y-m-d', strtotime($user_age_min.'year'));
No se olvide que atender el problema semántico de lo que entendemos por "un año" w.r.t. siguiente años bisiestos. Restar 365 días del 2008-02-28 le dará el 27-02-2002, mientras que restar 365 días del 2008-02-29 le dará el 2007-03-31. – HostileFork
Supongo que depende mucho de lo que signifique "restar un año". Puede querer decir el mismo mes y día, pero un año antes o el mes y el día después de restar 365 días, como señala Hostile. –