0

例: 2013 年 11 月の週番号は45 ~ 49、201412 月の週番号は49 ~ 53です。

4

1 に答える 1

0

これは、ドイツ/ヨーロッパ/ISO 週間のソリューションです。

  1. 指定された日付の週の木曜日を検索します。木曜日は、要求された週が属する年を決定します
  2. その年の 1 月 4 日の週の木曜日を検索します。今週の木曜日は第 1 週です
  3. 現在の週の木曜日と第 1 週の木曜日に 1 を加えた週の差を計算します。これが、指定された日付の週番号になります。

これを試して

function thursday(mydate) {
  var Th=new Date();
  Th.setTime(mydate.getTime() + (3-((mydate.getDay()+6) % 7)) * 86400000);
  return Th;
}

function getCalWeek(y, m, d) {
    thedate=new Date(y, m-1, d);
    ThursDate=thursday(thedate);
    weekYear=ThursDate.getFullYear();
    ThursWeek1=thursday(new Date(weekYear,0,4));
    theweek=Math.floor(1.5+(ThursDate.getTime()-ThursWeek1.getTime())/86400000/7);
    return theweek;
}

console.log("The week of the given date is: " + getCalWeek(2013, 11, 5));

編集:特定の質問については、月と年を指定する必要があり、次に週を計算します

function daysInMonth(month,year) {
    var m = [31,28,31,30,31,30,31,31,30,31,30,31];
    if (month != 2) return m[month - 1];
    if (year%4 != 0) return m[1];
    if (year%100 == 0 && year%400 != 0) return m[1];
    return m[1] + 1;
}

function getWeekRange(m, y) {
    var startWeek = getCalWeek(y, m, 1);
    var endWeek = getCalWeek(y, m, daysInMonth(m, y));
    return startWeek + " to " + endWeek;
}
于 2013-11-05T16:23:04.790 に答える