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

这对我来说毫无意义,为什么一天休息?从 2012-02-01 获得 2012-01-31 似乎并不明智......我在这里错过了什么?

4

1 回答 1

3

如果您不通过时间,它看起来像Date.parse使用GMT,它将是您所在时区 (GMT-6) 的前一天。如果您确实通过了明确的时间,则此行为将被抑制:00:00:0018:00:00

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