我想检查最终用户输入的日期格式是否为YYYY-MM-DD。正则表达式从来不是我的强项,我设置的preg_match()一直返回false。
所以我认为我在正则表达式上搞砸了,详见下文。
$date="2012-09-12";
if (preg_match("^[0-9]{4}-[0-1][0-9]-[0-3][0-9]$",$date))
{
return true;
}else{
return false;
}
有什么想法吗?
我想检查最终用户输入的日期格式是否为YYYY-MM-DD。正则表达式从来不是我的强项,我设置的preg_match()一直返回false。
所以我认为我在正则表达式上搞砸了,详见下文。
$date="2012-09-12";
if (preg_match("^[0-9]{4}-[0-1][0-9]-[0-3][0-9]$",$date))
{
return true;
}else{
return false;
}
有什么想法吗?
最简单的方法是将其转换为所需的格式:
$date="2012-09-12";
$date=strtotime($date);
if($date != NULL){
/*Valid Date*/
$date=date("Y-m-d",$date);
return true;
}else{
/*InValid Date*/
return false;
};
从 Laravel 5.7 开始,日期格式为:12/31/2019
function checkDateFormat(string $date): bool
{
return preg_match("/^(0[1-9]|1[0-2])\/(0[1-9]|[1-2][0-9]|3[0-1])\/[0-9]{4}$/", $date);
}
在 PHP 中处理日期时,应遵循 PHP 标准,因此给定的正则表达式将确保您拥有有效的日期,可以与 PHP 一起使用。
preg_match("/^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$date)
1980-01-01
但会匹配 2100-02-29
。 - Toto使用DateTime
和> PHP 8.0的一行代码解决方案,用于检查日期的正确性。
(DateTime::createFromFormat('Y-m-d', $date) ?: null)?->format('Y-m-d') === $date
[如果你使用的是Symfony 4.1.2,请尝试这个][1]
$validDate = explode("-",$request->get('date'));
if (checkdate(filter_var($validDate[1],FILTER_SANITIZE_NUMBER_INT),filter_var($validDate[0],FILTER_SANITIZE_NUMBER_INT),filter_var($validDate[2],FILTER_SANITIZE_NUMBER_INT))){
$date = date_create(filter_var($request->get('date'),FILTER_SANITIZE_SPECIAL_CHARS));
}else{
return $this->redirectToRoute('YOUR_ROUTE');
}
$date="2012-09-12";
if (preg_match("/^(20[0-9]{2})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$date)) {
return true;
} else {
return false;
}
这将防止输入9999-09-12这样的值。
这种方法对于PHP中的日期验证非常有用。当前的方法适用于mm/dd/yyyy格式。您必须根据您的格式和分隔符来更新checkdate中的参数序列。
explode。 function isValidDate($dt)
{
$dtArr = explode('/', $dt);
if (!empty($dtArr[0]) && !empty($dtArr[1]) && !empty($dtArr[2])) {
return checkdate((int) $dtArr[0], (int) $dtArr[1], (int) $dtArr[2]);
} else {
return false;
}
}
date("Y-m-d", strtotime("2012-09-12"))=="2012-09-12";
或者 PHP 的checkdate ( int $month , int $day , int $year )
。 - oxygen