在 JavaScript 中根据周数计算日期

新手上路,请多包涵

如何在知道周数和年份的情况下计算 JavaScript 中的日期?对于第 20 周和 2013 年,我想获得 2013-05-16。我正在尝试这样:

 Date.prototype.dayofYear = function () {
  var d = new Date(this.getFullYear(), 0, 0)
  return Math.floor((/* enter code here */ this - d) / 8.64e + 7)
}

原文由 user2369009 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 335
2 个回答
function getDateOfWeek(w, y) {
    var d = (1 + (w - 1) * 7); // 1st of January + 7 days for each week

    return new Date(y, 0, d);
}

这使用 简单的周定义,意味着 2013 年的第 20 周是 5 月 14 日。

计算给定 ISO8601 周 的开始日期(始终为星期一)

 function getDateOfISOWeek(w, y) {
    var simple = new Date(y, 0, 1 + (w - 1) * 7);
    var dow = simple.getDay();
    var ISOweekStart = simple;
    if (dow <= 4)
        ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1);
    else
        ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay());
    return ISOweekStart;
}

结果:2013年的第20周是5月13日,可以在 这里 确认。

原文由 Elle 发布,翻译遵循 CC BY-SA 4.0 许可协议

抱歉,如果这有点冗长,但此解决方案也会在计算周数后返回星期日。它结合了我从几个不同地方看到的答案:

 function getSundayFromWeekNum(weekNum, year) {
    var sunday = new Date(year, 0, (1 + (weekNum - 1) * 7));
    while (sunday.getDay() !== 0) {
        sunday.setDate(sunday.getDate() - 1);
    }
    return sunday;
}

原文由 nairys 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题