src/Date.php
public static function dateOfWeek($obj) : ?\DateTime
    {
        $oD = null;
        $wM = null;

        if ($obj !== null) {
            if (is_string($obj) === true) {
                $wM = self::weekMember($obj);
                $oD = self::dateOfWeek($wM);
            } else {
                if (is_array($obj) === true && isset($obj["year"]) === true && isset($obj["week"]) === true && isset($obj["day"]) === true) {
                    // ANO - Corrige valor fora dos limites válidos
                    $y = ($obj["year"] > 9999) ? 9999 : $obj["year"];
                    $y = ($y < 1) ? 1 : $y;

                    // SEMANA - Corrige valor fora dos limites válidos
                    $mW = self::weeksInYear($y);

                    $n = $obj["week"];
                    $n = ($n < 1) ? 1 : (($n > $mW) ? $mW : $n);

                    // Verifica set do dia da semana
                    $d = $obj["day"];

                    // DIA - Corrige valor fora dos limites válidos
                    $d = ($d < 1) ? 1 : (($d > 7) ? 7 : $d);

                    // Seta instância para o primeiro dia da primeira semana do ano alvo
                    $oD = self::firstWeekOfYear($y);

                    // Calcula quantidade de dias passados
                    $addD = ((($n - 1) * 7) + $d - 1);
                    $oD->add(new \DateInterval("P" . $addD . "D"));
                }
            }
        }

        return $oD;
    }
public static function dateOfWeek($obj) : ?\DateTime
    {
        $oD = null;
        $wM = null;

        if ($obj !== null) {
            if (is_string($obj) === true) {
                $wM = self::weekMember($obj);
                $oD = self::dateOfWeek($wM);
            } else {
                if (is_array($obj) === true && isset($obj["year"]) === true && isset($obj["week"]) === true && isset($obj["day"]) === true) {
                    // ANO - Corrige valor fora dos limites válidos
                    $y = ($obj["year"] > 9999) ? 9999 : $obj["year"];
                    $y = ($y < 1) ? 1 : $y;

                    // SEMANA - Corrige valor fora dos limites válidos
                    $mW = self::weeksInYear($y);

                    $n = $obj["week"];
                    $n = ($n < 1) ? 1 : (($n > $mW) ? $mW : $n);

                    // Verifica set do dia da semana
                    $d = $obj["day"];

                    // DIA - Corrige valor fora dos limites válidos
                    $d = ($d < 1) ? 1 : (($d > 7) ? 7 : $d);

                    // Seta instância para o primeiro dia da primeira semana do ano alvo
                    $oD = self::firstWeekOfYear($y);

                    // Calcula quantidade de dias passados
                    $addD = ((($n - 1) * 7) + $d - 1);
                    $oD->add(new \DateInterval("P" . $addD . "D"));
                }
            }
        }

        return $oD;
    }
public static function dateOfWeek ( $ obj ) : ? \ DateTime { $ oD = null ; $ wM = null ; if ( $ obj !== null ) { if ( is_string ( $ obj ) === true ) { $ wM = self :: weekMember ( $ obj ) ; $ oD = self :: dateOfWeek ( $ wM ) ; } else { if ( is_array ( $ obj ) === true && isset ( $ obj [ "year" ] ) === true && isset ( $ obj [ "week" ] ) === true && isset ( $ obj [ "day" ] ) === true ) { // ANO - Corrige valor fora dos limites válidos $ y = ( $ obj [ "year" ] > 9999 ) ? 9999 : $ obj [ "year" ] ; $ y = ( $ y < 1 ) ? 1 : $ y ; // SEMANA - Corrige valor fora dos limites válidos $ mW = self :: weeksInYear ( $ y ) ; $ n = $ obj [ "week" ] ; $ n = ( $ n < 1 ) ? 1 : ( ( $ n > $ mW ) ? $ mW : $ n ) ; // Verifica set do dia da semana $ d = $ obj [ "day" ] ; // DIA - Corrige valor fora dos limites válidos $ d = ( $ d < 1 ) ? 1 : ( ( $ d > 7 ) ? 7 : $ d ) ; // Seta instância para o primeiro dia da primeira semana do ano alvo $ oD = self :: firstWeekOfYear ( $ y ) ; // Calcula quantidade de dias passados $ addD = ( ( ( $ n - 1 ) * 7 ) + $ d - 1 ) ; $ oD -> add ( new \ DateInterval ( "P" . $ addD . "D" ) ) ; } } } return $ oD ; }
Retorna um DateTime conforme parametros passados.

@param       mixed $sW
Texto no formato "week" ou
array associativo com os dados brutos da data.

@return      ?DateTime
Retorna um DateTime conforme parametros passados .