2012-08-03 52 views
12

我正在使用phonegap localNotifications插件,该插件指定我可以设置每周发生的通知。在javascript中设置星期几

但是,它看起来javascript的日期对象只有.getDay()而不是.setDay()

我已经得到了我想要设置重复每周的天JSON对象,

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

你如何在JavaScript设置一天?因为它正在设定通知,所以这一天必须在将来,所以我不想得到最近的“星期三”,而只是下一个“星期三”。

这是一个链接到插件,但我不认为这是真的特定于插件。

回答

28

你如何在JavaScript设置一天?

你是说,在本周?什么时候开始一周?

假设它开始在周日(在getDay:0 - 星期日,1 - 星期一,等等),这将工作:

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

要设置时间为一个工作日,在未来7天,用这个:

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

我在想像Bergi这样的东西,但是因为它是一个通知,所以只能在将来设置。有没有办法用你的代码做到这一点? – pedalpete 2012-08-03 05:51:52

+0

您需要实际调用date.getDay()才能正常工作......我会修复它,但由于编辑最少需要6个字符,因此您必须自己完成。 – nus 2013-08-23 00:59:00

4

您可以创建一个setDay方法:

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

然后设定日期下周星期三:

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