Javascript日期对象与第一天的问题

时间:2012-10-05 18:35:34

标签: javascript jquery html

我正在使用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似乎并不明智......我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

Date.parse使用00:00:00格林威治标准时间,如果您没有通过时间,那么您的时区(GMT-6)中的前一天将为18:00:00。如果确实传递了显式时间,则会抑制此行为:

Date.parse(testIn1 + " 00:00:00");