Javascript 无法在Node.js中拆分字符串
我正在尝试向节点服务器发送请求。浏览器以mm/dd/yyyy格式发送日期,由服务器按以下方式处理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
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]