2012-08-03 55 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);