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
