使用 JavaScript 获取给定的日期年份、周数、一周内的日数

Get date given year, week number, day number within week with JavaScript

本文关键字:一周 周数 获取 JavaScript 日期 使用      更新时间:2023-09-26

正如主题所建议的那样 - 我希望得到一个日期,当我只有年份(例如 2014 年)、周(例如 47)和该周内的天数(例如 3 - 这将是星期三)。

我反过来也看到过一些类似的问题,但逆向工程的答案并没有提供任何成功的结果。

有什么想法吗?

我强烈建议您使用 The Moment.js 库。这是一个完整的日期操作库。

您的问题将通过此moment().year(2014).week(47).day(3).toDate();解决

function getDatebyWeek(year, week, day) {
  var d = {
    year: year,
    month: 0,
    day: 1
  };
  var date = new Date(d.year, d.month, d.day);
  var weekCount = 0;
  var month = 1;
  var done = false;
  while (weekCount < week) {
    while (date.getMonth() < month) {
      if (d.day % 7 === 0) {
        weekCount++;
      }
      d.day++;
      date.setDate(d.day);
      if (weekCount === week) {
        done = true;
        break;
      }
    }
    if (done) {
      break;
    }
    month++;
    d.month = month - 1;
    d.day = 1;
    date.setMonth(d.month);
    date.setDate(d.day);
  }
  if (day <= d.day && day >= (d.day - 7)) {
    return new Date(d.year, d.month - 1, day);
  } else {
    throw new Error('The day you entered is not in week ' + week);
  }
}
var wk = getDatebyWeek(2014, 47, 22);
document.write(wk.toString());

我写了这个非常丑陋的功能,以防万一你有什么反对的时刻.js :)

发件人 : 在 javascript 中获取给定年份、周数和日数的一周中的第一个日期

OP 的答案是(如果 dayNumber 从 1(星期一)到 7(星期日)):

function getWeekDate(year, weekNumber, dayNumber) {
  var date = new Date(year, 0, 10, 0, 0, 0),
      day = new Date(year, 0, 4, 0, 0, 0),
      month = day.getTime() - date.getDay() * 86400000;
  return new Date(month + ((weekNumber - 1) * 7 + (dayNumber - 1)) * 86400000);
};
alert(getWeekDate(2014, 47, 3));