Javascript:indexOf()&;substr()未返回日期字符串的预期结果

Javascript:indexOf()&;substr()未返回日期字符串的预期结果,javascript,string,function,Javascript,String,Function,在图中,您将看到传入的值和我尝试的所有字符串函数,但似乎没有任何效果。我甚至尝试通过新日期(d)将其放入变量中,但得到了“无效日期”。我还尝试使用trim()。如果我硬编码了一个日期字符串作为“d”的值,那么一切都按预期运行。 有人能告诉我我做错了什么吗? 传入参数的默认值为 var myDateObj = new Date(); var strDTGReceived = myDateObj.toLocaleDateString(); 对函数的调用是 var dtISOReceivedDat

在图中,您将看到传入的值和我尝试的所有字符串函数,但似乎没有任何效果。我甚至尝试通过新日期(d)将其放入变量中,但得到了“无效日期”。我还尝试使用trim()。如果我硬编码了一个日期字符串作为“d”的值,那么一切都按预期运行。 有人能告诉我我做错了什么吗?

传入参数的默认值为

var myDateObj = new Date();
var strDTGReceived = myDateObj.toLocaleDateString();
对函数的调用是

var dtISOReceivedDate = convertDate2ISO(strDTGReceived);
我得到的价值观是

Incoming Parameter (dateToConvert): 2/18/2020
Using dateToConvert.substr(0,3): ‎2‎
dateToConvert.indexOf('/'): 3
Using dateToConvert.toString().indexOf('/'): 3
Using dateToConvert.slice(0,2): ‎2
Using dateToConvert.length: 14

尝试使用函数时出错,将
date
变量定义为
myDate
时返回该变量

更改此选项后,您的代码应按如下所示工作:

函数转换日期(d){
var-strDate=d;
如果(d.indexOf(“-”)大于0){
标准日期=d.替换(/-/g.);
}
如果(d.indexOf(“/”)大于0){
var substrValue=d.substr(0,3);
var indexOfValue=d.indexOf('/');
var toStringIndexOfValue=d.toString().indexOf('/');
var sliceValue=d.slice(0,2);
console.log(“传入值(d):“+d+”\r\n”+”使用d.substr(0,3):“+substrValue+”\r\n使用d.indexOf('/'):“+indexOfValue+”\r\n使用d.toString().indexOf('/'):“+toStringIndexOfValue+”\r\n使用d.slice(0,2):“+sliceValue);
标准日期=“0”+标准日期;
}
var myDate=新日期(标准日期);
myDate.toISOString();
返回我的日期
}
console.log('Result:'+convertDate('2/18/2020'))
函数转换日期(d){
var myDate=新日期(d);
如果(“+myDate==”无效日期“)返回console.info(“无效日期格式!”);
返回myDate.toISOString();
}
console.log('Result:'+convertDate('2m18d2020'));
console.log('Result:'+convertDate('2/18/2020'));
console.log('Result:'+convertDate('2182020'));
console.log('Result:'+convertDate('2-18-2020'));

console.log('Result:'+convertDate('2.18.2020'))请更新您的问题以包含您的尝试,我们将能够提供更多帮助:)如果您有文本,请发布该问题,而不是文本图像。如果你能提供一个可复制的代码,这样我们就能看到问题,那就更好了。现在我只能猜测有空格字符,但实际上不可能这么说。@Brugui关于日期和myDate变量的说法是正确的,但我仍然得到相同的结果(见下文)。这一定意味着我没有传入字符串,即使字符串函数正在处理它。输入值(d):‎2.‎/‎18‎/‎2020年使用d.substr(0,3):‎2.‎ 使用d.indexOf('/'):3使用d.toString()。indexOf('/'):3使用d.slice(0,2):‎2传入参数的长度为14。。。。太长了。问题是。toLocaleDateString();它返回不同格式的日期,有一次我将它作为一个日期对象处理,并通过get month、day和year从它应该工作的日期开始构建字符串。仍然认为额外的字符不可见很奇怪,但问题解决了
Incoming Parameter (dateToConvert): 2/18/2020
Using dateToConvert.substr(0,3): ‎2‎
dateToConvert.indexOf('/'): 3
Using dateToConvert.toString().indexOf('/'): 3
Using dateToConvert.slice(0,2): ‎2
Using dateToConvert.length: 14