2015-02-20 4 views
0

Я пытаюсь установить дату начала и окончания в подборщике даты, где дата начала - неделя до текущей даты и даты окончания - неделя после даты начала. В определенном состоянии он дает мне 0 для даты начала. Может ли кто-нибудь заглянуть в код ниже и помочь мне получить правильный диапазон дат, когда текущая дата является первым днем ​​месяца или последней даты месяца. Спасибо за вашу помощь.Изменить диапазон дат в javascript

var date = new Date(); 

// Когда текущая дата была меньше 7 в некоторой ситуации, это давало мне ошибку. Итак, я проверяю текущую дату и случайным образом вычесть 3. // если текущая дата меньше 7, то получите последний день предыдущего месяца если (date.getDate() < = 7) {

day = new Date(date.getFullYear(), date.getMonth(), 0);   
    startdate = day.getDate() - 3; 
    month = day.getMonth() + 1; 
    year = day.getFullYear(); 

    if (month < 10) month = "0" + month; 
    if (day < 10) day = day; 
    console.log("App Config: lasy day: " + startdate + "\nmonth: " + month + "\nyear:" + year); 
} 

else { 

    startdate = date.getDate() - 7; 
    month = date.getMonth() + 1; 
    year = date.getFullYear(); 

    if (month < 10) month = "0" + month; 
    if (day < 10) day = day; 

    console.log("App Config: day: " + startdate + "\nmonth: " + month + "\nyear:" + year); 
} 

return month + "/" + startdate + "/" + year; 
+0

Какой тип даты вы используете? – void

+1

Вам не нужно иметь дело с переносом месяца самостоятельно. Если вы используете 'date.setDate (date.getDate() - 7), он будет автоматически выяснять его. – Barmar

ответ

1

вы пробовали это:

var dt = new Date(); 
var weekBefore = dt.setDate(dt.getDate() - 7); 
var weekAfter = dt.setDate(dt.getDate() + 7); 

JavaScript будет фигурировать его автоматически дату 7 дней до и после!

+0

Выше код по-прежнему будет работать, если текущая дата меньше 7. Например, если текущая дата 02/05/2015, то в соответствии с вашим кодом она будет выдана 01/28/2015. – user3461408

0

Если у вас все в порядке с плагинами, я бы предложил Moment.js, который отлично подходит для обработки дат. Добавление недели было бы так же просто, как

var inOneWeek = moment().add(1, 'weeks');//.format('DD/MM/YYYY'); if u want it in DD/MM/YYYY format 
var oneWeekAgo = moment().add(-1, 'weeks');//.format('DD/MM/YYYY'); 

в противном случае ответ на вопрос sabotero также будет выполнен.

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