web-dev-qa-db-fra.com

Comment trouver lundi dernier en utilisant momentjs?

Je dois travailler avec une logique qui nécessite que la semaine commence le lundi (pas le dimanche).

Je peux utiliser une fonction de début de semaine:

moment().tz('America/Los_Angeles').startOf('week').add(1, 'day')

Cependant, si c'est dimanche, je dois utiliser la date de la semaine dernière et ajouter 1 pour avoir lundi.

J'espère qu'il sera plus facile d'obtenir le "dernier lundi", quelle que soit la date.

15
chovy

J'ai trouvé la réponse ( documenté ) mais il existe une isoWeek qui débutera la semaine lundi au lieu de dimanche.

Semaine de départ le dimanche:

moment().startOf('week');

Semaine de départ le lundi:

moment().startOf('isoWeek');
32
chovy

Pour trouver le dernier lundi, utilisez simplement

moment().isoWeekday(-6); // ISO day of the week with 1 being Monday and 7 being Sunday.

Ou version localisée

moment().weekday(-7); // when Monday is the first day of the week
2
Loki

Je ne sais pas à propos de moment.js, mais en javascript simple, vous pouvez obtenir le lundi précédent en indiquant le nombre de jours, définissez-le sur 7 s'il est dimanche, puis soustrayez le nombre de jours moins un de la date. Si le jour est lundi, la même date est renvoyée.

par exemple.

var d = new Date();
d.setDate(d.getDate() + 1 - (d.getDay() || 7));
document.write(d)

2
RobG
 // when Monday is the first day of the week
moment().weekday(-7); // last Monday

Reportez-vous à la documentation officielle ici

0
Nakul Pant

Vous pouvez essayer ceci pour trouver n'importe quel jour de la semaine avant ou après la semaine en cours:

  public static Sun = 0
  public static MON = 1
  public static TUE = 2
  public static WED = 3
  public static THU = 4
  public static FRI = 5
  public static SAT = 6

  //@return: string like Jan 30
  //@param : weekAgo number of weeks past atual wanted
  //@param : dayOfWeek number 
  //  Sun = 0
  //  MON = 1
  //  TUE = 2
  //  WED = 3
  //  THU = 4
  //  FRI = 5
  //  SAT = 6
  public static pastDayOfWeek_MMMDD(weekAgo:number, dayOfWeek:number): String {
     return moment().isoWeekday(7+((weekAgo+1)*-7)+dayOfWeek).format('MMM DD');
  }


  //@return: string like Jan 30
  //@param : weekAgo number of weeks before atual wanted
  //@param : dayOfWeek number 
  //  Sun = 0
  //  MON = 1
  //  TUE = 2
  //  WED = 3
  //  THU = 4
  //  FRI = 5
  //  SAT = 6
  public static nextDayOfWeek_MMMDD(weekBefore:number, dayOfWeek:number): String {
    return moment().isoWeekday(-7+((weekBefore+1)*7)+dayOfWeek).format('MMM DD');
  }
0
Angelica Lima