Hola a todos:
Hoy os traigo una función que aunque sencilla puede ser muy útil cuando trabajamos con fechas en PHP.
En ocasiones necesitamos sumar o restar días a la fecha actual o a una fecha dada.
Vamos a crear una pequeña función que nos permite sumar o restar días, semanas, meses o años a una fecha:
<?php function sumaFechas ($suma,$fechaInicial = false) { $fecha = !empty($fechaInicial) ? $fechaInicial : date('Y-m-d'); $nuevaFecha = strtotime ($suma , strtotime ( $fecha ) ) ; $nuevaFecha = date ( 'Y-m-d' , $nuevaFecha ); return $nuevaFecha; } ?>
La función recibe dos parámetros, el primero es la cantidad de días, semanas, meses o años que vamos a sumar o restar y el segundo es la fecha a la que se los vamos a sumar.
Si no se pasa el parámetro fechaInicial la función tomará la fecha actual.
Para sumar 3 días al 15 de junio del 2014 llamamos a la función de esta manera:
echo sumaFechas('3 day', '2014-06-15');
Para sumar 3 semanas:
echo sumaFechas('3 week', '2014-06-15');
Recordad que también podemos restar poniendo el número en negativo:
echo sumaFechas('-4 month', '2014-06-15');
Veamos un ejemplo completo con varias posibilidades que podéis probar y que cubren todas las posibilidades que podéis necesitar:
<?php function sumaFechas ($suma,$fechaInicial = false) { $fecha = !empty($fechaInicial) ? $fechaInicial : date('Y-m-d'); $nuevaFecha = strtotime ($suma , strtotime ( $fecha ) ) ; $nuevaFecha = date ( 'Y-m-d' , $nuevaFecha ); return $nuevaFecha; } // Suma 5 días a la fecha 2014-06-15 echo sumaFechas('5 day', '2014-06-15').'<br/>'; // Suma 5 días a la fecha actual echo sumaFechas('5 day').'<br/>'; // Resta una semana a la fecha '2014-06-15' echo sumaFechas('-1 week', '2014-06-15').'<br/>'; // Suma 3 semanas a la fecha '2014-06-15' echo sumaFechas('3 week', '2014-06-15').'<br/>'; // Suma 4 meses a la fecha '2014-06-15' echo sumaFechas('4 month', '2014-06-15').'<br/>'; // Suma 2 años a la fecha '2014-06-15' echo sumaFechas('2 year', '2014-06-15').'<br/>'; ?>
Y eso es todo por hoy, espero que os sirva de ayuda. 😉
No dudéis en dejar en los comentario cualquier duda que os surja.
Un saludo, y si aún no lo has hecho no olvides suscribirte a mi blog para no perderte los próximos posts :-),También puedes seguirme en Twitter en @revigames y no olvides que me ayudas mucho si compartes este post en las redes sociales.
Gracias amigo, me ha servido de mucho! Un saludo!
Buenas,
Gracias por la info.
Y que significa el paramentro ? => $fecha = !empty($fechaInicial) ? $fechaInicial : date(‘Y-m-d’);
Y por que si quiero sumarle a una fecha mas de 47 años me devuelve la fecha 1970?
Por ejemplo:
function sumaFechas ($suma,$fechaInicial = false)
{
$fecha = !empty($fechaInicial) ? $fechaInicial : date(‘Y-m-d’);
$nuevaFecha = strtotime ($suma , strtotime ( $fecha ) ) ;
$nuevaFecha = date ( ‘Y-m-d’ , $nuevaFecha );
return $nuevaFecha;
}
echo sumaFechas(‘100 year’, ‘1991-10-04’);