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 );
}
}
/**
* 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 );
}
}
/** * 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
$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
$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