如何使用JavaScript通过子字符串获取ymd

020*_*402 4 javascript

使用此代码获取ymd:

var ymd = '20190716';
var year = ymd.substring(0, 4);
var month = ymd.substring(4, 2);
var day = ymd.substring(6, 2);

console.log(year);
console.log(month);
console.log(day);
Run Code Online (Sandbox Code Playgroud)

我认为从索引到长度获取子字符串的正确方法。所以...

想:

2019
07
16
Run Code Online (Sandbox Code Playgroud)

但是得到了:

2019
19
1907
Run Code Online (Sandbox Code Playgroud)

为什么?

Cer*_*nce 5

检查文档

substring()方法返回字符串的开始索引和结束索引之间或字符串末尾的部分。

如果indexStart大于indexEnd,则substring()的效果就像交换了两个参数一样。

因此,当您传递4, 2或时6, 2,您的意思是希望结束索引在开始索引之前,因此参数被切换,索引2到4,索引2到6。

也许您想要substr,它可以实现您的期望:

substring()的参数代表开始和结束索引,而substr()的参数代表开始索引和要包含在返回的字符串中的字符数。

var ymd = '20190716';
var year = ymd.substr(0, 4);
var month = ymd.substr(4, 2);
var day = ymd.substr(6, 2);
console.log(year);
console.log(month);
console.log(day);
Run Code Online (Sandbox Code Playgroud)

但是(有点)过时了。我希望使用substringslice,并传递索引。

如果indexStart大于indexEnd,则substring()方法将交换其两个参数,这意味着仍返回字符串。如果是这种情况,slice()方法将返回一个空字符串。

sliceIMO的行为更加直观。