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.
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');
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
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)
// when Monday is the first day of the week
moment().weekday(-7); // last Monday
Reportez-vous à la documentation officielle ici
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');
}