将Javascript字符串转换为日期

Convert Javascript string to date

本文关键字:日期 转换 字符串 Javascript      更新时间:2023-09-26

我有这两个变量的当前日期和日期…Sdate是一个标准字符串,由用户输入,然后与curdate进行比较。Curdate是来自smarty模板的日期字段(以mm/dd/yyyy格式显示今天的日期)

在比较日期之前,我需要将日期转换为相同类型的格式,这样就不会有人输入像jan/12/2013这样的东西…它不会匹配,并将显示此消息。

if(sdate > curdate){
    var d= confirm("The date you selected: " + sdate + " is in the future, OK to continue?");
    if(!d) return false;
}

您可以"限制"客户端输入将使用JavaScript,以确保输入的数据是数字,例如。有了数字输入,就可以很容易地构建所需格式的字符串。
我已经设置了这个,与下面的代码几乎相同。小提琴也做一些基本的检查(如不接受日期:la 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())
...