Показать связанные недели во втором раскрывающемся списке - PullRequest
0 голосов
/ 19 сентября 2019

Я просто создаю два выпадающих списка, первый - выпадающий месяц, я хочу отобразить второй выпадающий список недель.Я пытаюсь этот код, но не получается.

weeklist: string[] = [];
getWeeksInMonth(month, year) {
  var lenweek = [],
    week = [],
    firstDate = new Date(year, month, 1),
    lastDate = new Date(year, month + 1, 0),
    numDays = lastDate.getDate();
  var start = 1;
  var end = 7 - firstDate.getDay();
  while (start <= numDays) {
    week.push({
      start,
      end
    });
    lenweek.push("Week" + week.length);
    start = end + 1;
    end = end + 7;
    if (end > numDays)
      end = numDays;
  }
  this.weeklist = lenweek;
}
<select class="weeks" #months (change)="addmonth(months.value)">
  <option>Select Month</option>
  <option *ngFor="let month of monthlist" [value]="month.count">
    {{ month.name }}
  </option>
</select>

<span>Select Week</span> <br>
<select class="weeks" #weeks (change)="addweeks(weeks.value)">
  <option *ngFor="let week of weeklist" [value]="week">
    {{ week }}
  </option>
</select>

Результат за январь

Этот результат одинаков для всех месяцев.

Результат за апрель

Я хочу, чтобы результаты отличались, например, за январь Неделя с 1 по 5 февраля Февраль с 6 по 10 неделя, с марта по 11 неделя с 15 по декабрь .. Неделя 52,

Возможно ли это?

1 Ответ

0 голосов
/ 19 сентября 2019

Более простой подход

 Date.prototype.getWeek = function () {
      var onejan = new Date(this.getFullYear(), 0, 1);
      var today = new Date(this.getFullYear(), this.getMonth(), this.getDate());
      var dayOfYear = ((today - onejan + 86400000) / 86400000);
      return Math.ceil(dayOfYear / 7)
    };

    var today = new Date();

    var firstDay = new Date(today.getFullYear(), today.getMonth(), 1);
    var lastDay = new Date(today.getFullYear(), today.getMonth() + 1, 0);

    var weekNumberFirst = firstDay.getWeek();

    var weekNumberLast = lastDay.getWeek();

Вы можете использовать функцию, чтобы получить 2-недельные числа, вычесть их, и вы получите количество недель (продолжительность) в месяце, а затем переберите эти числаи добавьте "Week " к нему.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...