我有一些代码,它接受用户输入字符串日期MM / DD / YYYY并将其重构为YYYYMMDD,然后返回重构的字符串。
function formatDate(userDate) {
// format from M/D/YYYY to YYYYMMDD
var dateParts = userDate.split(/(\d{1,2})\/(\d{1,2})\/(\d{4})/);
var day = dateParts[2],
month = dateParts[1],
year = dateParts[3];
console.log(dateParts.length);
for (var i = 0; i < dateParts.length; i++) {
console.log(dateParts[i]);
}
console.log(dateParts);
if (day > 0 && day <= 9)
day = 0 + day;
if (month > 0 && month <= 9)
month = 0 + month;
return year + month + day;
}
console.log(formatDate("12/31/2014"));
jsfiddle link 起初我以为string.split()返回一个基于1的数组,但后来我发现实际上它返回一个长度为5的数组,在userDate [0]和userDate [4]上有空字符串,我可以'想通了。为什么会这样?谢谢!
答案 0 :(得分:3)
这应该有用。
function formatDate(userDate) {
// format from M/D/YYYY to YYYYMMDD
console.log(userDate);
var dateParts = userDate.split("/");
return dateParts[2] + dateParts[0] + dateParts[1];
}
console.log(formatDate("12/31/2014"));
&#13;
答案 1 :(得分:0)
这里有两个问题
split
/\//
的正则表达式
index
即
var day = dateParts[1],
month = dateParts[0],
year = dateParts[2];
<强>演示强>
function formatDate(userDate) {
var dateParts = userDate.split(/\//);
var day = pad0(dateParts[1]), month = pad0(dateParts[0]), year = dateParts[2];
return year + month + day;
}
function pad0(input)
{
return ("0" + input).slice(-2);
}
console.log(formatDate("12/31/2014"));
&#13;