3

正しい形式(mm-dd-yyyy)で新しい文字列を作成するこれらの2つの関数がありますが、現在はうまく機能していないようです...31-03-2013有効な日付である日付を入力する04-01-2013と、最初の関数のように出力されます。 1か月後...

2つの機能は次のとおりです。

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();
};
4

2 に答える 2

8

日付の月は、1月0日から12月11日までの数字です。

だから3は4月です...

それは非常に迷惑です:

  • -1から31。1ベースのインデックス
  • -0から11。ゼロベースのインデックス。

ええと...javascriptの仕様...続けてください。

MDN

これを使用して正しく設定できます。

date.setMonth(parseInt(s[1], 10) - 1);

あなたはそれがここで機能するのを見ることができます:

例

于 2013-03-12T21:17:32.623 に答える
3

これを試してください:

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(parseInt(s[1],10)-1);
    date.setYear(s[2]);
    return date.sqlDate();
};
于 2013-03-12T21:20:20.137 に答える