首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日期验证dd-mm-yyyy或dd/mm/yyyy

日期验证dd-mm-yyyy或dd/mm/yyyy
EN

Stack Overflow用户
提问于 2010-09-26 19:15:12
回答 8查看 12.8K关注 0票数 1

我从dd-mm-yyyy或dd/mm/yyyy格式的文本区域获取日期(允许用户使用-或/)如何检查(使用regex或php)日期是否有效?到目前为止,是否有regex或php方法来验证此格式的日期?我试着在这里搜索,但什么也找不到。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-09-27 02:48:15

我想出了这个小函数,它会检查你是否使用DD(separator)MM(sameseparator)YYYY格式

以DD、MM和YYYY为整数。

代码语言:javascript
复制
function valid_date($input_date) {
    if(!preg_match('/(?P<d>\d{2})(?P<sep>\D)(?P<m>\d{2})\2(?P<y>\d{4})/',$input_date, $aux_date)) 
        return false; 
    $aux = mktime(0,0,0,$aux_date['m'],$aux_date['d'],$aux_date['y']);
    return $input_date == date('d'.$aux_date['sep'].'m'.$aux_date['sep'].'Y',$aux);
}

(按照下面的建议编辑)

票数 4
EN

Stack Overflow用户

发布于 2010-09-26 21:53:21

代码语言:javascript
复制
$date = str_replace("/", "-", $incoming);
$d = explode("-"  , $date);

重新组装零件,然后通过检查日期运行它

代码语言:javascript
复制
if( !checkdate($d[1], $d[0], $d[2]) )
echo 'Not a recognised date' ;

http://www.php.net/manual/en/function.checkdate.php

票数 12
EN

Stack Overflow用户

发布于 2010-09-26 19:25:06

我强烈推荐使用PHP方法strtotime(),因为它不仅会检查格式是否有效,还会检查格式指定的时间是否正确(即永远不会有2月31日,但正则表达式可能无法捕捉到)。

您可以检查这是否对if (strtotime($toCheck)) {有效,因为如果不成功(http://us2.php.net/strtotime),它将返回FALSE

EDIT:您需要先切换顺序,然后才能使用strtotime检查日期是否有效,如下所示:

代码语言:javascript
复制
$str = "07-31-1987";
$str = preg_replace('/([^-\/]+)[-\/]([^-\/]+)[-\/]([^-\/]+)/', '$2-$1-$3', $str);
echo date('r', strtotime($str)) . "\n"; // Fri, 31 Jul 1987 00:00:00 -0700
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3797529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档