代码之家  ›  专栏  ›  技术社区  ›  Ryuuks

将MM/DD/YYYY转换为格式YYYYMMDD(javascript)[重复]

  •  1
  • Ryuuks  · 技术社区  · 7 年前

    我在这里一直在研究许多类似的问题,但事实是,我一直都不是很成功,直到我找到了一个令我满意的答案,但几乎没有成功:

     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 回复  |  直到 7 年前
        1
  •  5
  •   Ahmad Alfy    7 年前

    这是因为 getDay getDate 相反

    format .

        2
  •  2
  •   mparafiniuk    7 年前

    即使将函数getDay替换为getDate,代码也无法正常工作,因为您使用的是无效的日期格式。 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);
    }
    
        3
  •  1
  •   Kazantsev Raja Ramachandran    7 年前

    更改代码 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;
    }