PHP – Fechas – date
Función que comprueba una fecha en formato yyyy-mm-dd indicando si es un día válido o no.
Devuelve true si es correta o false si no lo es o esta vacía.
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 { /** * Indica si una fecha en formato "yyyy-mm-dd" es una fecha válida. * * @param string $fecha * * @return bool */ public static function isDate( $fecha ): bool { $sep = '-'; $fecha = ''.$fecha; // yyyy-mm-dd if ( strlen( $fecha ) != 10 ) { return false; } if ( $fecha[ 4 ] != $sep || $fecha[ 7 ] != $sep) { return false; } list( $anio, $mes, $dia ) = explode( $sep, $fecha ); $dt = date( 'Y-m-d', mktime( 0, 0, 0, $mes, $dia, $anio ) ); if ( false === $dt ) { return false; } return ( $fecha == $dt ); } }
Ejemplos de comprobaciones:
$date = HelperValidate::isDate('2020-12-25'); echo $date; // true $date = HelperValidate::isDate('2020-1-1'); echo $date; // false $date = HelperValidate::isDate('2020-01-01'); echo $date; // true $date = HelperValidate::isDate('1000-01-01'); echo $date; // false $date = HelperValidate::isDate('9999-12-25'); echo $date; // false $date = HelperValidate::isDate('0000-12-25'); echo $date; // false $date = HelperValidate::isDate('20-12-25'); echo $date; // false $date = HelperValidate::isDate('25-12-2020'); echo $date; // false $date = HelperValidate::isDate('2020/12/25'); echo $date; // false $date = HelperValidate::isDate('2020-24-25'); echo $date; // false $date = HelperValidate::isDate('2020-12-35'); echo $date; // false