2012-08-03 17 views
12

Estoy usando el complemento phonegap localNotifications que especifica que puedo establecer una notificación para que se produzca semanalmente.configuración día de la semana en javascript

Sin embargo, parece que el objeto de fecha de javascript solo tiene .getDay() y no .setDay().

Tengo un objeto JSON de los días de la semana Quiero configurar para repetir,

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

¿Cómo se configura un día en javascript? Debido a que está configurando una notificación, el día tiene que ser en el futuro, por lo que no quiero obtener el "miércoles" más reciente, sino solo el próximo "miércoles".

aquí hay un enlace al complemento, pero no creo que esto sea realmente específico del complemento.

Respuesta

28

¿Cómo se configura un día en javascript?

¿Quiere decir, en la semana actual? ¿Cuándo comienza una semana?

Suponiendo que comienza el domingo (como en getDay: 0 - Domingo, 1 - Lunes, etc), esto va a funcionar:

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); 

para fijar la fecha a un día de la semana en el próximo 7 días, utilice la siguiente:

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

Estaba pensando algo así como este Bergi, pero dado que es una notificación, solo se puede establecer en el futuro. ¿Hay alguna manera de hacer esto con tu código? – pedalpete

+0

necesita llamar realmente a date.getDay() para que esto funcione ... Lo habría arreglado, pero como las ediciones deben tener un mínimo de 6 caracteres, tendrá que hacerlo usted mismo. – nus

4

Se puede crear un método setDay:

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

A continuación, para establecer la fecha de la próxima semana Miércoles:

var d = new Date(); 
d.setDay(10); 
Cuestiones relacionadas