Como detertar si una hora hh:ii:ss es correcta

Código PHP

PHP – Validaciones – preg_match time

Función que detecta si una hora en formato hh:ii:ss es correcta.

El separador es el dos puntos (:).

/**
 * Class HelperValidate
 */
abstract class HelperValidate
{
    /**
     * Valida si es un string de hora correcta.
     *
     * @param $time
     *
     * @return bool
     */
    public static function isTime($time)
    {

        if ( !@preg_match("/^\d{2}:\d{2}:\d{2}$/", $time) ) {
            return false;
        }

        $array_time = explode(":", $time);

        list($hora, $min, $sec) = $array_time;
        settype($hora, "integer");
        settype($min, "integer");
        settype($sec, "integer");

        if ($hora >= 0 && $hora <= 23) {
            if ($min >= 0 && $min <= 59) {
                if ($sec >= 0 && $sec <= 59) {
                    $ret = true;
                } else {
                    $ret = false;
                }
            } else {
                $ret = false;
            }
        } else {
            $ret = false;
        }

        return $ret;
    }

}