41

週番号と年を知っている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)
}
4

10 に答える 10

103
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 日で、こちらで確認できます。

于 2013-05-16T15:09:39.480 に答える
5

ISO週間

function weekDateToDate (year, week, day) {
  const firstDayOfYear = new Date(year, 0, 1)
  const days = 2 + day + (week - 1) * 7 - firstDayOfYear.getDay()
  return new Date(year, 0, days)
}
于 2013-11-08T19:42:19.207 に答える
2
function getDateOfWeek(weekNumber,year){
    //Create a date object starting january first of chosen year, plus the number of days in a week multiplied by the week number to get the right date.
    return new Date(year, 0, 1+((weekNumber-1)*7));
}
var myDate = getDateOfWeek(20,2013);
于 2013-05-16T14:58:26.710 に答える