webentwicklung-frage-antwort-db.com.de

Wie finde ich den letzten Montag mit moment js?

Ich muss mit einer Logik arbeiten, die erfordert, dass die Woche am Montag beginnt (nicht am Sonntag).

Es gibt einen Funktionsbeginn der Woche, den ich verwenden kann:

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

Wenn es jedoch Sonntag ist, muss ich das Datum der letzten Woche verwenden und 1 addieren, um den Montag zu erhalten.

Ich hoffe, es ist einfacher, "letzten Montag" zu bekommen, egal wie spät es ist.

15
chovy

Ich habe die Antwort gefunden ( documented ), aber es gibt eine isoWeek, die die Woche am Montag statt am Sonntag beginnt.

Startwoche am Sonntag:

moment().startOf('week');

Startwoche am Montag:

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

Um den letzten Montag zu finden, benutzen Sie einfach

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

Oder Locale Aware-Version

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

Keine Ahnung von moment.js, aber in einfachem Javascript können Sie den vorherigen Montag abrufen, indem Sie die Tagesnummer abrufen und auf 7 setzen, wenn es Sonntag ist. Dann subtrahieren Sie die Tagesnummer minus eins vom Datum. Wenn der Tag Montag ist, wird dasselbe Datum zurückgegeben.

z.B.

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

Siehe die offiziellen Dokumente hier

0
Nakul Pant

Sie können dies versuchen, um einen beliebigen Wochentag vor oder nach der aktuellen Woche zu finden:

  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