Die Lösung aus Ihrem Kommentar wird ein falsches Ergebnis auf 01.01.2017 produzieren:
moment([2017,0,1]).year(2017).isoWeek(1).startOf('isoweek').format('DD.MM.YYYY');
// = '04.01.2016'
Dieser ist stabiler:
//var year = 2016;
//var week = 1;
var startDate = moment([year, 5, 30]).isoWeek(week).startOf('isoweek');
var endDate = moment(startDate).endOf('isoweek');
startDate.format('DD.MM.YYYY'); // = '04.01.2016'
endDate.format('DD.MM.YYYY'); // = '10.01.2016'
Erklärung: Wenn Sie den Moment Instanz initialisieren mit einem Datum von Woche 53 des Vorjahres in Verbindung mit isoWeek
oder week
, das Jahr compon Ent dieser Moment-Instanz wird auf das vorherige Jahr gesetzt. Alle zusätzlichen Momentenmethoden arbeiten dann im "falschen" Jahr. Verwenden Sie daher moment([year, 5, 30])
, um die Momentinstanz zu initialisieren. Jeder andere Tag nach dem 3. Januar funktioniert natürlich auch für 2016, nur die wenigen Tage, die zur Woche 53 des Vorjahres gehören, verursachen dieses Problem.
Welche Lösung haben Sie selbst getestet? –
Moment (neues Datum (Jahr, 0, 1)). IsoWoche (Woche) .startOf ('isoweek'). Format ('DD.MM.YYYY'); ist, was ive versuchte –
, aber ich denke, ich habe eine Lösung gefunden: moment(). Jahr (year.val()). isoWeek (week.val()). startOf ('isoweek'). Format ('DD.MM .YYYY ') –