Moment: Possible d'obtenir le numéro de semaine par rapport au mois ?

CrĂ©Ă© le 1 fĂ©vr. 2016  Â·  11Commentaires  Â·  Source: moment/moment

week() renvoie le numéro de la semaine en fonction de l'année, ce que j'aimerais obtenir est le numéro de la semaine par rapport au mois. C'est possible?

New Feature Up-For-Grabs

Commentaire le plus utile

Ce n'est pas intégré, mais en gros, vous pouvez soustraire le numéro de semaine du début du mois du numéro de semaine de la date en question.

function weekOfMonth(m) {
  return m.week() - moment(m).startOf('month').week() + 1;
}

Notez que la fonction week est spĂ©cifique aux paramĂštres rĂ©gionaux, donc dans certains cas, vous voudrez peut-ĂȘtre utiliser isoWeek la place. (Voir la doc).

Tous les 11 commentaires

Ce n'est pas intégré, mais en gros, vous pouvez soustraire le numéro de semaine du début du mois du numéro de semaine de la date en question.

function weekOfMonth(m) {
  return m.week() - moment(m).startOf('month').week() + 1;
}

Notez que la fonction week est spĂ©cifique aux paramĂštres rĂ©gionaux, donc dans certains cas, vous voudrez peut-ĂȘtre utiliser isoWeek la place. (Voir la doc).

Si quelqu'un veut ajouter cela au moment, un PR avec la fonction ci-dessus (ou similaire) et les tests unitaires associés seraient appréciés.

Suivi dans le PR #2965. Merci!

Qu'en est-il de l'ajout de cette capacité à la fonction format ?

Ce n'est pas intégré, mais en gros, vous pouvez soustraire le numéro de semaine du début du mois du numéro de semaine de la date en question.

function weekOfMonth(m) {
  return m.week() - moment(m).startOf('month').week() + 1;
}

Notez que la fonction week est spĂ©cifique aux paramĂštres rĂ©gionaux, donc dans certains cas, vous voudrez peut-ĂȘtre utiliser isoWeek la place. (Voir la doc).

moment("2018-12-31") -> semaineDuMois = -48

Certaines années, week() renverra 1 pour les derniers jours de l'année, voir #4019 . Donc, cela gùche les calculs comme @ Knjaz89 l'a mentionné.

Par conséquent, la bonne façon de calculer la weekOfMonth est :

function weekOfMonth(date) {
  let weekInYearIndex = date.week();
   if (date.year() !== date.weekYear()) {
    weekInYearIndex = date.clone().subtract(1,'week').week() + 1;
    }
    const weekIndex = weekInYearIndex - moment(date).startOf('month').week() + 1;
  }

weekOfMonth(moment('2018-12-31T00:00:00.000Z')); // return 6
weekOfMonth(moment('2019-01-01T00:00:00.000Z')); // return 1

Il a augmenté un indice hebdomadaire de 2020, il était difficile de calculer le nombre,
mais réglé avec l'aide de l'@eitanfr
Merci.

Certaines années, week() renverra 1 pour les derniers jours de l'année, voir #4019 . Donc, cela gùche les calculs comme @ Knjaz89 l'a mentionné.

Par conséquent, la bonne façon de calculer la weekOfMonth est :

function weekOfMonth(date) {
  let weekInYearIndex = date.week();
   if (date.year() !== date.weekYear()) {
  weekInYearIndex = date.clone().subtract(1,'week').week() + 1;
    }
    const weekIndex = weekInYearIndex - moment(date).startOf('month').week() + 1;
  }

weekOfMonth(moment('2018-12-31T00:00:00.000Z')); // return 6
weekOfMonth(moment('2019-01-01T00:00:00.000Z')); // return 1

Pour la date du 01/02/2020, il renvoie -52, j'ai donc corrigé ce cas :

function getWeekOfMonth(dateObj) {
    const date = m(dateObj);
    const weekInYear = date.isoWeek();
    const result = weekInYear - date.startOf('month').isoWeek();

    return result < 0 ? weekInYear : result;
}

Ce n'est pas intégré, mais en gros, vous pouvez soustraire le numéro de semaine du début du mois du numéro de semaine de la date en question.

function weekOfMonth(m) {
  return m.week() - moment(m).startOf('month').week() + 1;
}

Notez que la fonction week est spĂ©cifique aux paramĂštres rĂ©gionaux, donc dans certains cas, vous voudrez peut-ĂȘtre utiliser isoWeek la place. (Voir la doc).

GĂ©nial (y)

Pour info @M7Arman ne fonctionne pas pour 2020-08-30 , votre fonction signale la semaine 4, mais nous sommes dans la semaine 6.

Pour info @M7Arman ne fonctionne pas pour 2020-08-30 , votre fonction signale la semaine 4, mais nous sommes dans la semaine 6.

@michaelhayman tu veux dire qu'on est en semaine 5 ?

Cette page vous a été utile?
0 / 5 - 0 notes