将MM / DD / YYYY转换为YYYYMMDD格式(javascript)

时间:2017-09-06 10:44:14

标签: javascript date

我一直在看这里有很多类似的问题,但事实是我没有成功,直到我遇到一个令我高兴的答案,但差点就是这样:

 function convertDate (userDate) {
  // convert parameter to a date
  var returnDate = new Date(userDate);

  // get the day, month and year
  var y = returnDate.getFullYear();
  var m = returnDate.getMonth() + 1;
  var d = returnDate.getDay();

  // converting the integer values we got above to strings
  y = y.toString();
  m = m.toString();
  d = d.toString();

  // making days or months always 2 digits
  if (m.length === 1) {
    m = '0' + m;
  }
  if (d.length === 1) {
    d = '0' + d;
  }

  // Combine the 3 strings together
  returnDate = y + m + d;

  return returnDate;
}

这可能是显而易见的,但输出中的月份和日期不能100%工作,我只是不了解原因。

输出示例:

convertDate("12/31/2014");
"20141203"
convertDate("02/31/2014");
"20140301"

编辑: 为getDay替换getDate似乎可以解决问题。

这个答案也适合我的情况:

function convertDate (userDate) {
    return userDate.substr(6,4) + userDate.substr(3,2) + userDate.substr(0,2);
}

3 个答案:

答案 0 :(得分:5)

这是因为getDay会返回0到6周的工作日。您应该使用getDate代替。

你的第二个例子也是一个错误的日期,因为二月从来没有31天。

也许你应该尝试给[momentjs]一个机会。它确实有助于使用format来处理日期和在格式之间进行转换。

答案 1 :(得分:2)

即使您为getDate替换getDay函数,您的代码也无法正常运行,因为您使用的是无效的日期格式。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse#Fall-back_to_implementation-specific_date_formats

一般来说,如果你只需要处理这一种日期格式,将来不会改变它,你的功能可以简单:

function convertDate (userDate) {
    return userDate.substr(6,4) + userDate.substr(3,2) + userDate.substr(0,2);
}

答案 2 :(得分:1)

将代码var d = returnDate.getDay();更改为var d = returnDate.getDate();

function convertDate (userDate) {
  // convert parameter to a date
  var returnDate = new Date(userDate);

  // get the day, month and year
  var y = returnDate.getFullYear();
  var m = returnDate.getMonth() + 1;
  var d = returnDate.getDate();

  // converting the integer values we got above to strings
  y = y.toString();
  m = m.toString();
  d = d.toString();

  // making days or months always 2 digits
  if (m.length === 1) {
    m = '0' + m;
  }
  if (d.length === 1) {
    d = '0' + d;
  }

  // Combine the 3 strings together
  returnDate = y + m + d;

  return returnDate;
}