2015-12-27 11 views
14

Ho bisogno di lavorare con una logica che richiede settimana inizia il lunedì (non domenica).Come trovo lo scorso lunedì usando momentjs?

C'è un inizio funzione della settimana posso usare:

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

Tuttavia, se la sua Domenica, ho bisogno di usare la data della scorsa settimana e aggiungere 1 per ottenere lunedi.

Spero che sia più facile ottenere "ultimo lunedì" indipendentemente dalla data.

risposta

24

ho trovato la risposta (documented) ma c'è un isoWeek che prenderà il via settimana il Lunedi, invece di Domenica.

settimana di inizio di Domenica:

moment().startOf('week'); 

la settimana d'inizio il Lunedi:

moment().startOf('isoWeek'); 
+1

È documentato [qui] (http://momentjs.com/docs/#/manipulating/start-of/). –

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

Fare riferimento alle documentazione ufficiale here

+0

Torna domenica. – jcubic

+0

Questi esempi, sebbene nei documenti, non sono probabilmente ciò che l'OP sta cercando. Vedi [numero 2522] (https://github.com/moment/moment/issues/2522). –

2

so circa moment.js, ma in pianura javascript è possibile ottenere il precedente Lunedi ottenendo il numero del giorno, impostandolo a 7 se è Domenica, quindi sottrarre la numero del giorno meno uno dalla data. Se il giorno è lunedì, restituisce la stessa data.

ad es.

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

+0

Questo è veramente buono. Tuttavia, restituisce lo stesso giorno se oggi è un lunedì. Questo potrebbe essere desiderato, ma l'OP in realtà non specificava. IMHO, se oggi è lunedì e mi chiedi "lo scorso lunedì", penserò a quello 7 giorni fa, non al giorno attuale. –

+0

Sì, dipende dai requisiti. La maggior parte dei sistemi amministrativi con cui ho lavorato vorrebbe la stessa data se fosse un lunedì, ma socialmente, la gente si aspetta quella prima. Ha solo bisogno di un po 'più di logica, quindi se '1 - (d.getDay() || 7)' restituisce '0', restituisce' -7'. – RobG

1

per trovare l'ultimo Lunedi basta usare

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

o una località versione Consapevole

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

'momento(). Giorno della settimana (-7)' aggiunto nella versione 2.1.0 –

Problemi correlati