2015-10-12 12 views
9

Come posso ottenere il prossimo lunedì in JavaScript? Non riesco a trovare nulla di questo in internet e ho anche provato un sacco di codici e comprensione di questo, ma non posso davvero farlo.Ottenere la data del prossimo lunedì

Ecco il mio codice:

var d = new Date(); 
var day = d.getDay(); 
d = new Date(d.setDate(d.getDate() + day + (day == 0 ? -6 : 2))); 
+1

Se oggi è Lunedi, poi si desidera prossimo Lunedi o la data di oggi? –

+0

@BerozaPaul Oggi – nubteens

+0

Controlla anche: http://stackoverflow.com/questions/9481158/how-to-get-the-4-monday-of-a-month-with-js – belford

risposta

23

Questo farà:

var d = new Date(); 
d.setDate(d.getDate() + (1 + 7 - d.getDay()) % 7); 
console.log(d); 
+2

che non funziona per tutti i casi, ad esempio: "26/09/2017" restituisce 32 :) dovresti testare il mese e il numero di giorni del calcolo in ogni mese –

+1

@MouradIdrissi Fornisce il risultato corretto per me. 'var d = new Date (" 2017-09-26 ")', seguito dal codice sopra produce lunedì 2 ottobre 2017, che è il prossimo lunedì dopo martedì 26 settembre 2017. –

0

si prega di provare questo,

d = new Date(d); 
var day = d.getDay(), 
diff = d.getDate() - day + (day == 0 ? -6:1); 
alert(new Date(d.setDate(diff))); 

Grazie Amit

+0

Mi sta dando dei valori errati – nubteens

2

Utilizzando moment.js,

moment().add(7, 'days').calendar(); 
+2

la domanda non era> Quale libreria/quadro posso usare? < – Anonymous0day

+3

È menzionato ovunque nella domanda originale? La persona stava cercando una soluzione e io ho dato il mio usando una libreria popolare. – riyadhalnur

9

Ciò gi ve Lunedi prossimo se oggi è Lunedi

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

Questo si tradurrà in oggi, se oggi è Lunedi

var d = new Date(); 
d.setDate(d.getDate() + ((7-d.getDay())%7+1) % 7); 
+0

funziona bene nella mia console, ma non nel mio codice nodejs – bubunyo

+0

funziona in modo identico per me - se hai dato un po 'più di informazioni * non funziona * sarebbe solo peachy - considerando che questo codice dà gli stessi risultati di il codice che hai accettato, penso che probabilmente stai sbagliando –

+0

Ho lasciato cadere questo codice in JS fiddle. Ha funzionato bene. Ieri, quando l'ho scaricato nella mia app meteorologica, stavo ricevendo una data per il 14 – bubunyo

0

Se è necessario gestire i fusi orari, uno l'opzione sarebbe quella di utilizzare i metodi UTCDate setUTCDate() e getUTCDate(). Ciò consente la coerenza in modo che il calcolo sia lo stesso indipendentemente dall'impostazione del fuso orario.

var d = new Date(); 
d.setUTCDate(d.getUTCDate() + (7 - d.getUTCDay()) % 7 + 1); 

(Questo è l'esempio di sopra, dove su un Lunedi viene restituito il seguente Lunedi)

0
var closestMonday =() => { 
    var curr_date = new Date(); // current date 
    var day_info = 8.64e+7; // milliseconds per day 
    var days_to_monday = 8 - curr_date.getDay(); // days left to closest Monday 
    var monday_in_sec = curr_date.getTime() + days_to_monday * day_info; // aleary Monday in seconds from 1970 
    var next_monday = new Date(monday_in_sec); // Monday in date object 
    next_monday.setHours(0,0,0); 
    return next_monday; 
} 
Problemi correlati