Saltar al contenido

Validar que la entrada esté en este formato de hora: “HH: MM”

Solución:

Puede usar expresiones regulares para verificar eso.

durante 12 horas:

preg_match("/^(?:1[012]|0[0-9]):[0-5][0-9]$/", $foo)

por 24 horas:

preg_match("/^(?:2[0-3]|[01][0-9]):[0-5][0-9]$/", $foo)

Si usa un reloj de 24 horas desde 01:00 para 24:59, usar

preg_match("/^(?:2[0-4]|[01][1-9]|10):([0-5][0-9])$/", $foo)

Función simple que valida una fecha (y / o hora) sin arrojar excepciones. Toma el formato de fecha esperado como parámetro:

function isValidDate(string $date, string $format="Y-m-d"): bool
{
    $dateObj = DateTime::createFromFormat($format, $date);
    return $dateObj && $dateObj->format($format) == $date;
}

Cómo funciona: convierte la fecha de entrada en un PHP DateTime objeto de acuerdo con el pasado $format, luego compara este objeto con la fecha de entrada original. Si coinciden, la fecha es válida y tiene el formato esperado.

Algunos ejemplos de uso:

/* Valid Examples: */
isValidDate("2017-05-31");
isValidDate("23:15:00", 'H:i:s');
isValidDate("2017-05-31 11:15:00", 'Y-m-d h:i:s');

/* Invalid: */
isValidDate("2012-00-21");
isValidDate("25:15:00", 'H:i:s');
isValidDate("Any string that's not a valid date/time");

Imaginemos que la hora que quieres comprobar es $timeStr y tiene que ser el formato H:i según las especificaciones de la fecha. Usar una expresión regular para esto es en mi humilde opinión una tontería. Esto es mucho más fácil de leer:

ACTUALIZADO

$timeStr = " 02:00"; //example of valid time, note whitespace
test($timeStr);
$timeStr = "23:59"; //valid
test($timeStr);
$timeStr = "24:00"; //invalid
test($timeStr);
$timeStr = "25:00"; //invalid
test($timeStr);    
$timeStr = "16:61"; // invalid
test($timeStr);

//tests 23:59 hour format
    function test($timeStr){

    $dateObj = DateTime::createFromFormat('d.m.Y H:i', "10.10.2010 " . $timeStr);

    if ($dateObj !== false && $dateObj && $dateObj->format('G') == 
        intval($timeStr)){
        //return true;
        echo 'valid  <br/>';
    }
    else{
      //return false;
      echo 'invalid <br/>';
    }

}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *