2012-08-03 43 views
12

Tôi đang sử dụng plugin điện thoại cục bộNotifications chỉ định rằng tôi có thể đặt thông báo xuất hiện hàng tuần.cài đặt ngày trong tuần trong javascript

Tuy nhiên, nó xuất hiện đối tượng ngày javascript chỉ có .getDay() chứ không phải .setDay().

Tôi đã có một đối tượng JSON của những ngày của tuần tôi muốn đặt lặp lại,

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

làm thế nào để bạn thiết lập một ngày trong javascript? Bởi vì nó đang thiết lập một thông báo, ngày phải ở trong tương lai, vì vậy tôi không muốn nhận "ngày thứ tư" gần đây nhất, nhưng chỉ là "ngày thứ tư" tiếp theo.

đây là liên kết tới plugin, nhưng tôi không nghĩ điều này thực sự cụ thể đối với plugin.

Trả lời

28

làm thế nào để bạn thiết lập một ngày trong javascript?

Ý bạn là, trong tuần hiện tại? Khi nào một tuần bắt đầu?

Giả sử nó bắt đầu vào chủ nhật (như trong getDay: 0 - Chủ nhật, 1 - Thứ hai, vv), điều này sẽ làm việc:

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

Để đặt ngày đến một tuần trong vòng từ 7 ngày, sử dụng này:

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

Tôi đã suy nghĩ một cái gì đó như thế này Bergi, nhưng nhìn thấy như nó là một thông báo, nó chỉ có thể được thiết lập trong tương lai. Có cách nào để làm điều này với mã của bạn? – pedalpete

+0

bạn cần gọi date.getDay() để làm việc này ... Tôi đã sửa nó, nhưng vì các chỉnh sửa cần tối thiểu 6 ký tự, bạn sẽ phải tự mình làm. – nus

-3

Bạn có đang tạo đối tượng ngày mới để đặt không?

var d = new Date(); 
d.setDate(11); 

sẽ cho kết quả trong

Tue Aug 14 2012 00:31:56 GMT-0500 (Central Daylight Time) 

Đối tượng ngày không có một phương pháp quy định.

http://www.tutorialspoint.com/javascript/javascript_date_object.htm

+5

Các OP dường như muốn có một 'phương pháp setDay', không phải là' phương pháp setDate'. – Bergi

4

Bạn có thể tạo một phương pháp setDay:

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

Sau đó, để thiết lập ngày để được vào tuần tới Thứ Tư:

var d = new Date(); 
d.setDay(10); 
Các vấn đề liên quan