2016-09-15 2 views
-1

У меня есть этот код, который получает текущую дату, а затем получайте также дни недели. Иногда этот код не работает, например, сегодня 08/15, я получу 08/13. Мне нужна функция, чтобы получить предыдущие и следующие дни недели.Получите предыдущие и следующие дни недели в javascript

var self = this; 
var curr = new Date; 
self.mult = 0; 
    self.firstDate = new Date; 
    self.lastDate = new Date; 
    var first = curr.getDate() - (curr.getDay()-1); 
    var last = first + 6; 
    self.firstDate(Utils.dateFormat(new Date(curr.setDate(first)),"%Y-%m-%d", true)); 
    self.lastDate(Utils.dateFormat(new Date(curr.setDate(last)),"%Y-%m-%d", true)); 

И это функция, чтобы увидеть предыдущие дни недели,

var self= this; 
    var curr = new Date; 
    self.mult(self.mult()-7); 
    var first = curr.getDate() - (curr.getDay()-1) + self.mult(); 
    var last = first + 5; 
    if(self.mult() <= 0){ 
     last = last + 1; 
    } 
    self.firstDate(Utils.dateFormat(new Date(curr.setDate(first)),"%Y-%m-%d", true)); 
    self.lastDate(Utils.dateFormat(new Date(curr.setDate(last)),"%Y-%m-%d", true)); 

И это функция, чтобы увидеть в последующие дни недели,

var self= this; 
    var curr = new Date; 
    self.mult(self.mult()+7); 
    var first = curr.getDate() - (curr.getDay()-1) + self.mult(); 
    var last = first + 5; 
    self.firstDate(Utils.dateFormat(new Date(curr.setDate(first)),"%Y-%m-%d", true)); 
    self.lastDate(Utils.dateFormat(new Date(curr.setDate(last)),"%Y-%m-%d", true)); 

Я не уверен, но я думаю, что только предыдущие дни недели - проблема.

Вот пример ситуации.

Сценарий 1: Пользователь посетить страницу, сегодня 09/15 то firstDate должно быть 09/12, то lastDate должен быть 09/18 пользователь нажимает дальше, то firstDate должен быть 09/19 и lastDate - 09/25 пользователь нажимает следующий раз, затем firstDate - 09/26, а lastDate - 10/02 пользователь нажимает предыдущий, тогда firstDate должен быть 09/19, а lastDate - 09/25

Сценарий 2: Пользователь на странице, сегодня 09/15 , тогда firstDate должен быть 09/12, а lastDate должен быть 09/18 пользователь нажимает предыдущий, затем firstDate должен быть 09/5, а lastDate - 09/11 пользователь нажимает предыдущий раз, затем firstDate должен быть 08/29, а lastDate - 09/4 пользователь нажимает следующий, тогда firstDate должен быть 09/5 и lastDate is 09/11

Может ли кто-нибудь ответить на код, который может выполнять мои сценарии?

+0

Почему вы поставите 'this' в переменную' self'? – evolutionxbox

+0

@evolutionxbox это стандартный метод, чтобы сохранить это, когда «это» в противном случае было бы изменено вне контекста, например, в '$ .each' loop,' this' является значением внутри цикла, а 'self' по-прежнему является' this 'извне цикла. Здесь нет никакого смысла, но, учитывая отступ, я бы предположил, что есть другой код, который не был включен для краткости. –

+0

@ freedomn-m Спасибо в любом случае. Я уже знал, что ты сказал. Просто OP использует это без причины. – evolutionxbox

ответ

0

Вы можете использовать setDate()

, например:

var a = new Date(); 
console.log(a) 
//Thu Sep 15 2016 10:22:25 GMT+0200 (CEST) 
a.setDate(a.getDate()+1); 
console.log(a) 
//Fri Sep 16 2016 10:22:25 GMT+0200 (CEST) 
+0

но как я могу получить первый день недели (понедельник) и последний день недели (воскресенье)? – JMA

0

Я бы рекомендовал использовать библиотеку для таких задач, как это. Например moment.js.

Начало недели с этого момента

moment(new Date()).startOf('isoWeek').format('MMMM Do YYYY, h:mm:ss ') 

Конец недели от теперь

moment(new Date()).endOf('isoWeek').format('MMMM Do YYYY, h:mm:ss ') 

Для получения более подробной информации смотрите: http://momentjs.com/

Смежные вопросы