2009-06-22 2 views
19

Кто-нибудь знает, как я могу получить следующую неделю на основании этой недели? Например, если у меня есть эта дата в четверг (25/6/2009), как я могу использовать javascript для получения следующей четвертой даты (2/7/2009)?Как получить следующую неделю Дата в javascript

ответ

42
var firstDay = new Date("2009/06/25"); 
var nextWeek = new Date(firstDay.getTime() + 7 * 24 * 60 * 60 * 1000); 

Вы также можете посмотреть на DateJS если вам нравится "текучие" API-интерфейсы.

+1

Не работает в течение недели с изменениями ДСТ, хотя :( – etienne

+1

@etienne, вы пробовали datejs? Мне просто интересно, я не тестировал его с помощью дневного сбережения. –

+0

Пока нет. Но я сейчас сражаюсь с DST - так как мы изменили этот уик-энд :( – etienne

9
Date.prototype.addDays = function (d) { 
    if (d) { 
     var t = this.getTime(); 
     t = t + (d * 86400000); 
     this.setTime(t); 
    } 
}; 

this_week.addDays(7); 
+0

мне это нравится ...! +1 – Cerebrus

+1

Я бы дал только прототип даты. – glmxndr

+1

Зачем оставлять только прототип даты? – razzed

28
function nextweek(){ 
    var today = new Date(); 
    var nextweek = new Date(today.getFullYear(), today.getMonth(), today.getDate()+7); 
    return nextweek; 
} 
+0

Nice - функция самодокументирована и работает с красными шкафами, такими как секунды прыжка. – l0b0

+0

Хорошая работа. с небольшой адаптацией вы можете найти день недели (т. е. следующий в четверг). ad к последнему аргументу, today.getDate() - today.getDay() + 7 + 4 (работает в четверг) – Lathan

+1

Однако это может привести к некоторым неверным датам, что может или может не работать, в зависимости от того, насколько умны целевые функции JS Engine Date(). Например, через неделю после 30 августа 2013 года будет 37 августа 2013 года, что является недопустимым. – Shayne

8

функция dateObject.getNextWeekDay возвращает следующий день недели после собственной даты объекта.

Date.prototype.getNextWeekDay = function(d) { 
 
    if (d) { 
 
    var next = this; 
 
    next.setDate(this.getDate() - this.getDay() + 7 + d); 
 
    return next; 
 
    } 
 
} 
 

 
var now = new Date(); 
 
var nextMonday = now.getNextWeekDay(1); // 0 = Sunday, 1 = Monday, ... 
 
var secondNextMonday = new Date(nextMonday).getNextWeekDay(1); 
 
console.log('Next Monday : ' + nextMonday); 
 
console.log('Second Next Monday : ' + secondNextMonday);

+0

заслуживает лучшего ответа –

+0

Это разрушительно, оно обновляет аргумент. http://stackoverflow.com/questions/1090815/how-to-clone-a-date-object-in-javascript –

+1

И загрязняет прототип даты - см. http://programmers.stackexchange.com/questions/104320/why – tuomassalo

1

Функция, которая возвращает следующий weekdaay:

function getNextWeekDay (startDate, dayOfWeek){ 
    var dayOffset = dayOfWeek > startDate.getDay() 
     ? dayOfWeek - startDate.getDay() 
     : dayOfWeek - startDate.getDay() + 7; 

    startDate.setDate(startDate.getDate() + dayOffset); 

    return startDate; 
} 

var now = new Date(); 

var nextMonday = getNextWeekDay(new Date(),1); // 0 = Sunday, 1 = Monday, ... 
var nextSaturday = getNextWeekDay(new Date(),6); 
var nextSunday = getNextWeekDay(new Date(),0); 
var secondNextMonday = getNextWeekDay(new Date(now.getTime() + (7 *24 * 60 * 60 * 1000)),1); 
alert(nextMonday+ '- '+nextSaturday+ '- '+nextSunday+ '- '+secondNextMonday); 
Смежные вопросы