2012-08-03 13 views
12

Sto utilizzando il plug-in localNotifications di phonegap che specifica che è possibile impostare una notifica che si verifichi settimanalmente.impostazione giorno della settimana in javascript

Tuttavia, sembra che l'oggetto data javascript abbia solo .getDay() e non .setDay().

ho un oggetto JSON dei giorni della settimana voglio impostare ripetere,

 
set_days = {"mon":false, "tues":true,"wed":false,"thurs":true...} 

Come si imposta una giornata in javascript? Poiché sta impostando una notifica, il giorno deve essere nel futuro, quindi non voglio ricevere il "mercoledì" più recente, ma solo il "mercoledì" successivo.

Ecco un collegamento al plug-in, ma non penso che questo sia specifico del plug-in.

risposta

28

Come si imposta una giornata in javascript?

Intendi, nella settimana corrente? Quando inizia una settimana?

Supponendo che inizia Domenica (come in getDay: 0 - Domenica, 1 - Lunedi, ecc), questo funzionerà:

var date, daytoset; // given: a Date object and a integer representing the week day 

var currentDay = date.getDay(); 
var distance = daytoset - currentDay; 
date.setDate(date.getDate() + distance); 

Per impostare la data a un giorno feriale nel prossimo 7 giorni, utilizzare questo:

var distance = (daytoset + 7 - currentDay) % 7; 
+0

Stavo pensando qualcosa come questo Bergi, ma visto che si tratta di una notifica, può essere impostato solo in futuro. C'è un modo per farlo con il tuo codice? – pedalpete

+0

devi effettivamente chiamare date.getDay() perché funzioni ... L'avrei risolto, ma dato che le modifiche devono essere minime di 6 caratteri, dovrai farlo tu stesso. – nus

4

È possibile creare un metodo setDay:

Date.prototype.setDay = function(dayOfWeek) { 
    this.setDate(this.getDate() - this.getDay() + dayOfWeek); 
}; 

Poi per impostare la data per la prossima settimana Mercoledì:

var d = new Date(); 
d.setDay(10); 
Problemi correlati