JS - определить понедельник и передать в календарь pickmeup

peretc001

Новичок
Добрый день.

Подскажите, как определить понедельник на JS и передать его в скрипт pickmeup в формате 2017-09-18

я делаю так:

Код:
var today = new Date();
                var monday = new Date();
                var tuesday = new Date();
                var wednesday = new Date();
                var thursday = new Date();
                var friday = new Date();
                var saturday = new Date();
                var sunday = new Date();
             
// Задаем следующий Пн
if(today.getDay()){
                    monday.setDate(today.getDate() + 8 - today.getDay());
                    } else {
                    monday.setDate(today.getDate() + 1);
                    }
             
                // Задаем остальные дни относительно Пн
                tuesday.setDate(monday.getDate() + 1);
                wednesday.setDate(monday.getDate() + 2);
                thursday.setDate(monday.getDate() + 3);
                friday.setDate(monday.getDate() + 4);
                saturday.setDate(monday.getDate() + 5);
                sunday.setDate(monday.getDate() + 6);
 
//Передаем в календарь                
$('#work').on('click', function (e) {
        pickmeup('.clndr').set_date([monday,tuesday,wednesday,thursday,friday]);
при нажатии Рабочая неделя (button с id=work) даты отмечаются корректно, но если попытаться выделить другие даты, то некоторые не отменяются и если вытащить их через стандарнтым способ pickmeup('.clndr').get_date(); получаю undefined
тк они в виде Mon Sep 18 2017 17:11:16 GMT+0300 (MSK) а не 2017-09-18

ссылка на demo https://jsfiddle.net/peretc001/5999xnbg/

если коротко, но нужно по кнопке "Рабочая неделя" передать в календарь рабочие дни на следующей недели в формате (Y-m-d), например (2017-09-18, 2017-09-19, 2017-09-20, 2017-09-21, 2017-09-22)
 
Последнее редактирование:

peretc001

Новичок
те понедельник я получаю как раньше
Код:
var today = new Date();
                var monday = new Date();
                var tuesday = new Date();
                var wednesday = new Date();
                var thursday = new Date();
                var friday = new Date();
                var saturday = new Date();
                var sunday = new Date();
           
// Задаем следующий Пн
if(today.getDay()){
                    monday.setDate(today.getDate() + 8 - today.getDay());
                    } else {
                    monday.setDate(today.getDate() + 1);
                    }
а потом все конвертирую по типу:

Код:
monday_date = monday.setDate(today.getDate() + 8 - today.getDay());
var monday_date_pars = new Date(monday_date); // получаю 1505751823911
m = monday_date_pars.getFullYear() + '-' + monday_date_pars.getMonth() + '-' + monday_date_pars.getDate(); // получаю 2017-8-18 а не 2017-09-18
почему получаю август а не сентябрь? и как добавить 0 к месяцу, если до 10 месяца
 

peretc001

Новичок
извиняюсь, я понял почему сентябрь отображает как 8 месяц

Код:
                if(today.getDay()){ //если сегодня не 0, те не Вс
                    //monday_date = monday(14+8-4) = 18
                    //14 - сегодня 14.09.2017
                    //4 - сегодня четверг
                    monday_date = today.getDate() + 8 - today.getDay();
                    } else {
                    //если сегодня 0, те сегодня Вс
                    monday_date = today.getDate() + 1;
                    }
                
                // получаем полное число следующего понедельника в формате YYYY-mm-dd
                monday_mec = today.getMonth()+1;
                console.log(monday_mec);
                    
                if (monday_date < 10)  { monday_date = '0' + monday_date; }
                if (monday_mec < 10)  { monday_mec = '0' + monday_mec; }

                m = today.getUTCFullYear() + '-' + monday_mec + '-' + monday_date;
                console.log(m);
 
Последнее редактирование:

peretc001

Новичок
вы про кавычки? я думал нет разницы)

подскажите, еще вопрос, есть даты, которые нужно заблокировать, они в массиве
Код:
var disabled_days = (new Date('2017-9-24T21:00:00.000Z'),new Date('2017-9-25T21:00:00.000Z'));
//достать их получается
for(var i = 0; i < disabled_days.length; i++) {
    //console.log(disabled_days[i]);
    }
но вот применить в функции не получается, из массива берется только последнее число
Код:
pickmeup('.clndr', {
        flat      : true,
        mode      : 'range',
        calendars : 1,
        format: 'Y-m-d',
        separator: ',',
        min : new Date(),
        select_month :false,
        select_year  : false,
        render: function(date) {
            if (date.toString() == disabled_days.toString()){ // if (date.toString() == disabled_days[i].toString()){ выдает ошибку
                return {
                    disabled   : true,
                    class_name : 'disabled'
                }
            }
        }
    }).clear();
 

peretc001

Новичок
вот это я тупой
Код:
pickmeup('.clndr', {
        flat      : true,
        mode      : 'range',
        calendars : 1,
        format: 'Y-m-d',
        separator: ',',
        min : new Date(),
        select_month :false,
        select_year  : false,
        render: function(date) {
        var disabled_days = [new Date('2017-9-24T21:00:00.000Z'), new Date('2017-9-25T21:00:00.000Z')];
        
        
        for(i = 0; i < disabled_days.length; i++)
        //console.log(disabled_days[i].toString());
        //console.log(date.toString());
        
            if (date.toString() == disabled_days[i].toString()) {
            return {
                    disabled   : true,
                    class_name : 'disabled'
                }
            }
            
        }
    }).clear();
 

peretc001

Новичок
подскажите, как у каждого элемента массива отрезать T21:00:00.000Z, чтоб осталось просто 2017-09-24
сам массив
var disabled_days = [new Date('2017-09-24T21:00:00.000Z'), new Date('2017-09-25T21:00:00.000Z')];
 
Сверху