0

私はJavascriptの日付を扱っていますが、文字列から日付を取得しようとすると少し混乱しています。

これは私が持っているコードです:

var formatDate = function(dateObj) {
    // make sure date values are two digits and months start at 1
    var adjMonth = dateObj.getMonth() + 1;
    var adjDate = dateObj.getDate();
    if (adjMonth < 10) adjMonth = '0' + adjMonth;
    if (adjDate < 10) adjDate = '0' + adjDate;

    // build and return dateStr
    var dateStr = dateObj.getFullYear() + '-' + adjMonth + '-' + adjDate;
    return dateStr;
};

$(document).ready(function() {
    var testIn1 = "2012-02-01";
    var testDate1 = new Date(testIn1);
    var testDate1Str = formatDate(testDate1);

    var testIn2 = "2012-01-31";
    var testDate2 = new Date(testIn2);
    var testDate2Str = formatDate(testDate2);

    $('#output').html("---Input = '" + testIn1 + "':<br>" + testDate1 + "<br>" + testDate1Str + "<br>"
                     +"---Input = '" + testIn2 + "':<br>" + testDate2 + "<br>" + testDate2Str + "<br>");
});​

これから得られる結果は次のとおりです。

---Input = '2012-02-01':
Tue Jan 31 2012 18:00:00 GMT-0600 (CST)
2012-01-31
---Input = '2012-01-31':
Mon Jan 30 2012 18:00:00 GMT-0600 (CST)
2012-01-30

これは私には意味がありません。なぜ 1 日休みなのですか? 2012-02-01 から 2012-01-31 を取得するのは賢明ではないようです...ここで何が欠けていますか?

4

1 に答える 1

3

時間を指定しない場合は GMTをDate.parse使用しているようで、タイム ゾーン (GMT-6) で前日になります。明示的な時間を渡すと、この動作は抑制されます。00:00:0018:00:00

Date.parse(testIn1 + " 00:00:00");
于 2012-10-05T18:41:10.363 に答える