Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用不同格式解析日期的通用方法_Javascript_Date_Parsing - Fatal编程技术网

Javascript 用不同格式解析日期的通用方法

Javascript 用不同格式解析日期的通用方法,javascript,date,parsing,Javascript,Date,Parsing,我需要创建一个javascriptcheckDateFormat函数,该函数接受两个字符串参数: 日期字符串 格式字符串 它应该根据格式字符串检查日期字符串的格式是否正确 例如: checkDateFormat("12-32-2012", "dd-MM-yyyy") // false 用户可能会更改格式字符串,我需要相应地检查日期 我已经搜索了很多,但找不到一个通用函数来满足我的需要。这是可以实现的,还是有必要为所有可能的日期格式编写不同的实现 多谢各位 也许这就是你想要的 function

我需要创建一个javascript
checkDateFormat
函数,该函数接受两个字符串参数:

  • 日期字符串
  • 格式字符串
  • 它应该根据格式字符串检查日期字符串的格式是否正确

    例如:

    checkDateFormat("12-32-2012", "dd-MM-yyyy") // false
    
    用户可能会更改格式字符串,我需要相应地检查日期

    我已经搜索了很多,但找不到一个通用函数来满足我的需要。这是可以实现的,还是有必要为所有可能的日期格式编写不同的实现


    多谢各位

    也许这就是你想要的

    function chkdate(datestr,formatstr){
        if (!(datestr && formatstr)) {return false;}
        var splitter = formatstr.match(/\-|\/|\s/) || ['-']
           ,df       = formatstr.split(splitter[0])
           ,ds       = datestr.split(splitter[0])
           ,ymd      = [0,0,0]
           ,dat;
        for (var i=0;i<df.length;i++){
                if (/yyyy/i.test(df[i])) {ymd[0] = ds[i];}
           else if (/mm/i.test(df[i]))   {ymd[1] = ds[i];}
           else if (/dd/i.test(df[i]))   {ymd[2] = ds[i];}
        }
        dat = new Date(ymd.join('/'));
        return !isNaN(dat) && Number(ymd[1])<=12 && dat.getDate()===Number(ymd[2]);
    }
    //usage
    console.log(chkdate ('12/12/2009', 'dd/mm/yyyy')); //=> true
    console.log(chkdate ('12/32/2009', 'dd/mm/yyyy')); //=> false
    console.log(chkdate ('2002/02/02', 'yyyy-dd-mm')); //=> false
    console.log(chkdate ('02-12-2001', 'dd-mm-yyyy')); //=> true
    console.log(chkdate ('02-12-2001', 'dd mm yyyy')); //=> false
    
    函数chkdate(datestr,formatstr){
    如果(!(datestr&&formatstr)){return false;}
    var splitter=formatstr.match(/\-\/\\/\s/)\\\['-']
    ,df=formatstr.split(拆分器[0])
    ,ds=datestr.split(拆分器[0])
    ,ymd=[0,0,0]
    ,dat;
    对于(var i=0;i false
    console.log(chkdate('2002/02/02','yyyy-dd-mm');//=>false
    console.log(chkdate('02-12-2001','dd-mm-yyyy');//=>true
    console.log(chkdate('02-12-2001','dd-mm-yyyy');//=>false
    
    @Jergason看看我的问题-这是可以实现的,还是我必须为所有可能的日期格式编写不同的CASE语句。我要求代码了吗?对不起,误读了你的问题。如果我的dateformat更改为dd.mm.yyyy。我需要在你的代码中做哪些更改?更改
    formatstr.match(/\-\124\/\ s/)
    to
    formatstr.match(/\-\/\\\s\./)