Search code examples
javascriptgetdate

JavaScript's getDate returns wrong date


The following script returns 20 instead of 21!

var d = new Date("2010/03/21");
document.write(d.getDate());

What am I doing wrong? Is this a JavaScript bug?


Solution

  • The Date.parse method is implementation dependent (new Date(string) is equivalent to Date.parse(string)).

    While this format will be available on modern browsers, you cannot be 100% sure that the browser will interpret exactly your desired format.

    I would recommend you to manipulate your string, and use the Date constructor with the year, month and day arguments:

    // parse a date in yyyy-mm-dd format
    function parseDate(input) {
      var parts = input.match(/(\d+)/g);
      // new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]])
      return new Date(parts[0], parts[1]-1, parts[2]); // months are 0-based
    }