Fecha de un día pasado de la semana

Este artículo es útil para ver el funcionamiento combinado de "date" y "mktime" y muestra una función que devuelve la fecha en formato "dd/mm/yyyy" del último día pasado.
Si se quiere cambiar el formato de la fecha devuelta, habría que cambiar la siguiente línea por el formato deseado:

return(date("d/m/Y", $fecha));

Por ejemplo si quisiéramos 'mm-dd-aa':

return(date("m-d-y", $fecha));

La función recibe un día de la semana ($dia_semana), siendo 1 lunes, 2 martes, etc. hasta el domingo que puede ser 7 ó 0. Si recibe un valor mayor que 7 o menor que 0 devuelve error (-1).
Recibe también las semanas transcurridas de forma que si se le pasa un 1 buscará el último día de la semana pasado, un 2 buscará el día de la semana anterior y así sucesivamente. Debe recibir un número positivo que no sea 0 o devolverá error (-1)



Código:
//Copyright © McAnam.com

function fecha_pasada($dia_semana, $semanas_transcurridas){

$sale = 0;
$cont = 0;

if (($dia_semana > 7) || ($dia_semana < 0) || ($semanas_transcurridas < 1)) return -1;

if ($dia_semana == 7) $dia_semana=0;

while (!$sale){
$fecha = mktime(0,0,0,date("m"), date("d") - $cont++, date("Y"));
$dia = date("w", $fecha);
if ($dia == $dia_semana){
if ($semanas_transcurridas > 1)
$semanas_transcurridas--;
else
$sale = 1;
}
}

return(date("d/m/Y", $fecha));

}

//Ejemplos de utilización
echo "Último lunes: ".fecha_pasada(1,1);
echo "
";
echo "Hace 2 domingos: ".fecha_pasada(7,2);

?>

No hay comentarios: