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:
<?php
    //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 "<br>";
    echo "Hace 2 domingos: ".fecha_pasada(7,2);
    
?>


Para cualquier duda, consulta, sugerencia, opinión, colaboración, etc; no dude en ponerse en contacto con nosotros

Copyright © 2002-2017 [McAnam]. Reservados todos los derechos.
www.mcanam.com