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.
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');
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
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)
// when Monday is the first day of the week
moment().weekday(-7); // last Monday
Siehe die offiziellen Dokumente hier
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');
}