Obtenga el primer o el último viernes de un mes

Estoy tratando de escribir una función de calendario como esta

function get_date($month, $year, $week, $day, $direction)
{
    ....
}

$week es un número entero (1, 2, 3 ...), $ day es un día (Sun, Mon, ...) o número, lo que sea más fácil. La dirección es un poco confusa, porque hace un cálculo diferente.

Por ejemplo, llamemos a

get_date(5, 2009, 1, 'Sun', 'forward');

Utiliza el predeterminado y obtiene el primer domingo de mayo, es decir, el 2009-05-03. Si llamamos a

get_date(5, 2009, 2, 'Sun', 'backward');

, devuelve el segundo domingo pasado en mayo, es decir, 2009-05-24.

Respuestas a la pregunta(24)

Su respuesta a la pregunta