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

标签 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 似乎没有意义......我在这里错过了什么?

最佳答案

如果您没有指定时间,Date.parse 使用 00:00:00 GMT,那么它将是 18:00:您所在时区前一天的 00 (GMT-6)。如果您确实经过了明确的时间,则此行为将被抑制:

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

关于Javascript 日期对象与每月第一天的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12752113/

相关文章:

javascript - JSFiddle 返回 "Please use POST request",但我没有使用表单

javascript - 在网络音频缓冲区中安排回调

javascript - jQuery 对话框部分表单提交验证

javascript - 为什么 React 在渲染之前需要检查节点是否为根节点?

javascript - 点击后 FAB 操作是否可能保持打开状态?

html - css - 显示:none; and visibility:hidden;?有什么区别

html - 缩放时 Div 位于其他 Div 之上

javascript - 我如何检查对象的 typeSoftware 是否具有 (-1) 值并将其从中删除?

javascript - 在选择第一个 Bootstrap 选择时更新第二个 Bootstrap 选择的值

php - Ajax 从 php 获取返回值?