javascript - 查找上一个和下一个日期

标签 javascript

有人可以帮助我理解为什么我会从这个 JavaScript 函数获得输出吗?

mod.getAdjacentDates = function (year, month, date) {
    var prevDate = new Date(year, month, date);
    var nextDate = new Date(year, month, date);

    prevDate.setDate(date - 1);
    nextDate.setDate(date + 1);

    var data = {
        prevDate: prevDate.getDate(),
        prevMonth: prevDate.getMonth() + 1,
        prevYear: prevDate.getFullYear(),
        nextDate: nextDate.getDate(),
        nextMonth: nextDate.getMonth() + 1,
        nextYear: nextDate.getFullYear()
    };

    alert(year + '-' + month + '-' + date + ' ' + JSON.stringify(data));

    return data;
};

我从警报中得到的输出是:

2013-12-17
{
   "prevDate":16,
   "prevMonth":1,
   "prevYear":2014,
   "nextDate":20,
   "nextMonth":6,
   "nextYear":2014
 }

我期望得到以下输出:

2013-12-17
{
  "prevDate":16,
  "prevMonth":12,
  "prevYear":2013,
  "nextDate":18,
  "nextMonth":12,
  "nextYear":2013
}

最佳答案

当我尝试你的代码时,我得到:

{
  "prevDate":16,
  "prevMonth":1,
  "prevYear":2014,
  "nextDate":18,
  "nextMonth":1,
  "nextYear":2014
}

您还需要在创建日期时从月份中减一:

var prevDate = new Date(year, month - 1, date);
var nextDate = new Date(year, month - 1, date);

如果您创建月份值为 12 的日期,它将溢出到年份中,从而成为下一年 1 月的日期。

关于javascript - 查找上一个和下一个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20640038/

相关文章:

javascript - 检查大于今天的日期以及 js 中的日期格式的日期验证

javascript - 使用 HTML5 的 MPEG-DASH 自适应流媒体在 Windows Chrome/Mozilla 中不起作用

javascript - 将鼠标悬停在该元素上时,如何将 json 数据分配给该段落?

javascript - Xively 使用 javascript 从 feed 获取数据流列表

javascript - 单击父级时如何不解雇其子级? (普通 JavaScript)

javascript - 达到特定字符数后如何防止输入文本区域?

javascript - 使用 node.js 和 google-api 获取 Gmail 收件箱

javascript - 如何通过 javascript 获取 css 文件文本?

javascript - ChartJS 条形图差距

javascript - D3.js Hierarchical Edge Bundling,如何更改文本组的颜色?