日期为2013年4月1日而非2013年3月31日

Fab*_*ook 3 javascript date

我有这两个函数以正确的格式(mm-dd-yyyy)创建一个新的字符串,但现在它似乎不能很好地工作...当我输入31-03-2013一个有效日期的日期时,它出现04-01-2013在第一个一个月......

以下是两个功能:

Date.prototype.sqlDate = Date.prototype.sqlDate || function () {
    return this.getMonth() + "-" + this.getDate() + "-" + this.getFullYear();
};

String.prototype.sqlDate = String.prototype.sqlDate || function () {
    var date = new Date(0);
    var s = this.split("-");
    //If i log "s" here its output is: 
    //    ["31", "03", "2013", max: function, min: function]
    date.setDate(s[0]);
    date.setMonth(s[1]);
    date.setYear(s[2]);
    return date.sqlDate();
};
Run Code Online (Sandbox Code Playgroud)

gdo*_*ica 8

月份日期是0月1日至12月11日之间的数字,

那么3月是4月......

这非常烦人,因为:

  • 1 到第31 .一个基础索引
  • - 0到11.零基指数.

嗯...... javascript的规格......继续.

MDN

您可以使用它来设置它:

date.setMonth(parseInt(s[1], 10) - 1);
Run Code Online (Sandbox Code Playgroud)

你可以看到它在这里工作:

例