将JavaScript字符串转换为日期

这个问题在这里已经有了答案:

  • 为什么Date.parse会提供不正确的结果? 10个答案

  • 例如,您可以“限制”使用JavaScript的客户端输入内容,以确保输入的数据是数字。 使用该数字输入,您可以非常容易地以所需格式构建字符串。
    我已经设置了这个小提琴 ,几乎和下面的代码一样。 小提琴也会进行一些基本检查(比如不接受日期à33/54/1001),并且也解析日期。 输入完整日期后,点击按钮并检查控制台中的输出:它是一个普通的日期对象,可以与另一个日期对象(如今天的日期对象: curdate = new Date(); )进行比较。
    但为了让你开始,下面是按键处理程序的简化版本,它处理用户输入:

    var keypress = function(e)
    {
        e = e || window.event;//FROM HERE
        var el = e.target || e.srcElement,
        char = String.fromCharCode(e.keyCode || e.which);
        e.returnValue = false;
        e.cancelBubble = true;
        if (e.preventDefault)
        {
            e.preventDefault();
            e.stopPropagation();
        }//TO HERE, a lot of X-browser issues are adressed
        if (char == +(char) && el.value.length < 10)
        {//format input:
            el.value = (el.value + char).replace(/^([0-9]{0,2})/*([0-9]{0,2})/*([0-9]{0,4})$/,function(all, m, d, y)
             {
                 m += m.length === 2 ? '/' : '';
                 d += d.length === 2 ? '/' : '';
                 return m+d+y;
             });
        }
        return e;//done
    };
    var dateIn = document.getElementById('dateInputElement');
    if (dateIn.addEventListener)
    {//add event handlers
        dateIn.addEventListener('keypress',keypress, false);
    }
    else
    {
        return dateIn.attachEvent('onkeypress',keypress);
    }
    

    为了更好地理解这段代码,你可能想看看这里和这里。


    您可以使用类似Date.js的库来将用户输入的字符串和其他类似日期的值解析为已知格式。 然后直接比较。

    if (Date.parse(sdate) > Date.parse(curdate)) {
      ...
    }
    

    使用moment.js,你可以做如下事情:

    if (moment(sdate, 'MM/DD/YYYY') > moment(curdate))
    ...
    

    如果你说curdate代表“现在”,那么只需要:

    if (moment(sdate, 'MM/DD/YYYY') > moment())
    ...
    

    如果你想确保日期是特定的格式,你可以使用他们的验证功能:

    if (moment(sdate, 'MM/DD/YYYY').isValid())
    ...
    
    链接地址: http://www.djcxy.com/p/18621.html

    上一篇: Convert Javascript string to date

    下一篇: javascript new Date with string param has wrong date