Javascript 无法在Node.js中拆分字符串

Javascript 无法在Node.js中拆分字符串,javascript,node.js,Javascript,Node.js,我正在尝试向节点服务器发送请求。浏览器以mm/dd/yyyy格式发送日期,由服务器按以下方式处理 var endDate; if (req.query.endDate) { endDate = new Date(req.query.endDate); } 此在chrome和除IE以外的其他浏览器中运行良好 在IE11中,出于某种原因,它将日期从“2017年5月24日”编码为“2017年5月24日”。 为了解决这个问题,我正在尝试这样做: var

我正在尝试向节点服务器发送请求。浏览器以mm/dd/yyyy格式发送日期,由服务器按以下方式处理

    var endDate;
    if (req.query.endDate) {
        endDate = new Date(req.query.endDate);
    }
在chrome和除IE以外的其他浏览器中运行良好

在IE11中,出于某种原因,它将日期从“2017年5月24日”编码为“2017年5月24日”。 为了解决这个问题,我正在尝试这样做:

    var endDate;
    if (req.query.endDate) {
        endDate=req.query.endDate.toString().trim();
        endDate=endDate.toString().split('?').join('');
        console.log('Log',endDate);
        endDate = new Date(endDate);
    }
预期结果为“2017年5月24日”,但不起作用

当我在日志中看到“?5?/?24?/?2017”的拆分(“?”)时,结果显示为“?5?/?24?/?2017””。为什么它不把绳子分开

我做错什么了吗? 节点版本:4.3.2(使用NVM)

在您的情况下,假设某个UTF-8符号中的“?”可能不是问号

它可用于日期格式本身:

var endDate = new Date(req.query.endDate);
endDate.toLocaleDateString()

或regexp方法:

req.query.endDate.toString().match(/[0-9]+/g); // [month, date, year]

这听起来更像是浏览器端的问题,而不是服务器端的问题。您可能应该关注用于将请求发送到应用程序的代码,而不是node.js app。您无法在Javascript中拆分字符串,而不是node.js。同时也要注意,这种约会窃听很可能会在某个时候回来咬你的屁股。改为使用日期库,即矩。js您不能使用
replace('?','')
?为什么不使用
replace
string方法
endDate.toString().replace(“?”,“)
@slowdeath007我写的代码只在nodejs中。正是IE发送了查询参数中格式错误的数据,我正试图找到一个不起作用的修复程序。。req.query.endDate.toLocaleDateString不是一个函数。它是否被使用:endDate=新日期(req.query.endDate);//更改了主注释,它在新日期(req.query.endDate)抛出错误;无效的日期然后,使用regexp检索数字:req.query.endDate.toString().match(/[0-9]+/g)它将返回['5','24','2017']。并加入它以获得正确的结果。请把它作为答案,以便我能把它标记为正确答案。:)
req.query.endDate.toString().match(/[0-9]+/g); // [month, date, year]