PHP – Validaciones – DateTime yyyy-mm-dd hh:ii:ss
Función que comprueba una fecha y hora en formato yyyy-mm-dd hh:ii:ss indicando si es un día y hora válidos.
Devuelve true si es correta o false si no lo es o alguno es vacío. No sirve para comprobar sólo días o sólo horas.
Acepta como formato de día y mes 1 o 2 dígitos. El año es siempre de 4 dígitos.
/** * Class HelperValidate */ abstract class HelperValidate { /** * Comprueba si una fecha i hora * en formato "yyyy-mm-dd hh:mm:ss" es correcta * * @param string $datetime * * @return bool */ public static function isDateTime($datetime): bool { // yyyy-mm-dd hh:mm:ss if (strlen($datetime) != 19) { return false; } if ($datetime[ 4 ] != '-' || $datetime[ 7 ] != '-' || $datetime[ 10 ] != ' ' || $datetime[ 13 ] != ':' || $datetime[ 16 ] != ':') { return false; } list($fecha, $hora) = explode(' ', $datetime); list($anio, $mes, $dia) = explode('-', $fecha); list($hora, $min, $sec) = explode(':', $hora); return $datetime == date('Y-m-d H:i:s', mktime($hora, $min, $sec, $mes, $dia, $anio)); } }
Varios ejemplos:
$date = HelperValidate::isDateTime('2020-12-25 23:50:55'); echo $date; // true $date = HelperValidate::isDateTime('2020-12-24 00:00:00'); echo $date; // true $date = HelperValidate::isDateTime('2020-12-24 25:12:12'); echo $date; // false $date = HelperValidate::isDateTime('2020-12-24 12:610:12'); echo $date; // false $date = HelperValidate::isDateTime('2020-12-24 12:14:60'); echo $date; // false $date = HelperValidate::isDateTime('2020-12-24 12:1:2'); echo $date; // false $date = HelperValidate::isDateTime('2020-12-24 12:01:02'); echo $date; // true $date = HelperValidate::isDateTime('2020-01-01'); echo $date; // false