一、这里输入的日期判断判断格式是以“-”作为间隔符来判断。
格式类似于(2020-12-31)
二、代码实现
function run_ping_year($year,$day){
if ($year % 400 == 0 || $year % 4 == 0 && $year % 100 != 0) { //判断是润年
echo "润年<br>"; //
$chack_run_day = "#(^0[1-9]|[1-2][0-9])$#"; //润年
$run_days = preg_match($chack_run_day, $day);
if ($run_days) {
echo "日期格式正确<br>"; //
} else {
echo "日期不正确——$day<br>";
// exit;
}
}
else
{
echo "平年<br>"; //
$chack_ping_day = "#(^0[1-9]|[1-2][0-8])$#"; //平年
$ping_days=preg_match($chack_ping_day,$day);
if ($ping_days) {
echo "日期格式正确<br>"; //
} else {
echo "日期不正确——$day<br>";
// exit;
}
}
}
function chack_my_date($data){
$month_b=array(1,3,5,7,8,10,12); //大月
$month_l=array(4,6,9,11); //小月
$cut_dat = explode('-', $data); //把日期切割
//判断年份_正则表达式
$chack_year="#(^[1-9][0-9][0-9][0-9])$#"; //年份判断
$res_year = preg_match($chack_year,$cut_dat[0]);
if ($res_year) {
}else{
echo "年份不正确——$cut_dat[0]<br>";
// exit;
}
//大月日期判断
if(in_array($cut_dat[1],$month_b)) //大月
{
$chack_b_day = "#(^0[1-9]|[1-2][0-9]|3[0-1])$#"; //大月日期
$res_days=preg_match($chack_b_day,$cut_dat[2]);
if ($res_days) {
echo "格式正确<br>"; //
}
else
{
echo "日期不正确——$cut_dat[2]<br>";
// exit;
}
}
//小月日期
else if(in_array($cut_dat[1],$month_l)) //小月
{
$chack_l_day = "#(^0[1-9]|[1-2][0-9]|30)$#"; //大月日期
$res_days=preg_match($chack_l_day,$cut_dat[2]);
if ($res_days) {
echo "格式正确<br>"; //
}
else
{
echo "日期不正确——$cut_dat[2]<br>";
// exit;
}
}
//特殊二月
else if ($cut_dat[1] == 2)
{
//二月判断
run_ping_year($cut_dat[0],$cut_dat[2]);
}
else
{
echo '月份错误<br>';
}
}
chack_my_date("2020-12-05"); //正确格式
chack_my_date("2020-13-30"); //月份错误
chack_my_date("2020-11-31"); //日期错误
chack_my_date("100-1-30"); //年份格式不正确
chack_my_date("20sa-13-30"); //特殊错误
chack_my_date("2020-5-3.2"); //特殊错误
效果图