Moment.js получает номер недели на основе определенного дня (также прошлых лет)

Как я могу получить с момента JS номер недели из даты в прошлом только из объекта, отформатированного в момент, из выбранного дня?


person Arthur Kovacs    schedule 20.09.2014    source источник


Ответы (3)


  $(document).ready(function(){
    var weeknumber = moment("12-25-1995", "MM-DD-YYYY").week();
    console.log(weeknumber);
  });

Согласно документам momentjs:

Поскольку разные языковые стандарты определяют нумерацию недель по-разному, Moment.js добавил момент # неделя, чтобы получить / установить локализованную неделю года.

Неделя в году меняется в зависимости от того, какой день является первым днем ​​недели (воскресенье, понедельник и т. Д.), И какая неделя является первой неделей года.

Например, в США воскресенье - первый день недели. Неделя с 1 января - первая неделя года.

Итак, если у вас возникли проблемы с получением правильного номера недели, используйте .isoWeek ()

$(document).ready(function(){
  var weeknumber = moment("11-26-2016", "MMDDYYYY").isoWeek();
  alert(weeknumber);
});

Пример

person Giovani    schedule 20.09.2014
comment
Будьте осторожны с этим, поскольку момент (31.12.2015, ММ / ДД / ГГГГ) .week () вернет 1 в качестве недели. Вы также можете посмотреть moment (). IsoWeek () - person Will Lovett; 17.02.2016
comment
на 29 ноября 2016 вернуть 47 как неделю. Но реальный - 48. - person mathewsun; 29.11.2016
comment
Ответ улучшен @mathewsun - person Giovani; 29.11.2016
comment
Чтобы быть ясным, если вы используете какое-либо из решений, приведенных выше (moment().format('w'), moment().week(), moment().isoWeek() и т. Д.), вы должны знать, что они дадут вам точный номер недели. Так, например, дата moment('2018-12-31').format('w') вернет 1, потому что это понедельник первой недели 2019 года. Это последний день 2018 года, но не на неделе 2018 года. - person Oliver Sosa; 02.01.2019

Вы также можете использовать format()

Примеры:

moment().format('w') // as .week() like '1'
moment().format('W') // as .isoWeek() like '1'
moment().format('ww') // as .week() (2 digits) like '01'
moment().format('WW') // as .isoWeek() (2 digits) like '01'

Дата недели ISO: https://en.wikipedia.org/wiki/ISO_week_date < / em>

Дополнительная информация: https://momentjs.com/docs/#week-year-week-and-weekday-tokens

person l2aelba    schedule 10.10.2017
comment
И ТАКЖЕ GGGG или GG дает год iso, соответствующий этой неделе - person Simon_Weaver; 30.12.2019
comment
Пример: обратите внимание, что сегодняшний день (Monday 12/30/19) фактически является частью первой недели ISO 2020 года, и поэтому, если вы используете WW yyyy, а не WW GGGG, вы получите 1 2019 вместо 1 2020 - person Simon_Weaver; 30.12.2019
comment
Можно использовать со стандартным форматом ISO для года недели: moment("12-25-1995", "MM-DD-YYYY").format("GGGG-[W]WW-E") - person mike85; 27.04.2020

Это не имеет отношения к вопросу, но если вы хотите получить 1 за понедельник, 2 за вторник и т. Д. moment().format("d")

person PJ3    schedule 15.02.2021