• Как получить дату ближайшего понедельника на JS?

    Joomler
    @Joomler
    Приведённый выше способ не совсем универсальный.
    Хотя и абсолютно верный в контексте поставленного вопроса.
    Насколько я понимаю, он подходит именно для понедельника, но не для любого нужного дня недели.
    Кроме того, он укажет дату именно следующего понедельника, но не ближайшего. А в этом есть разница. И для некоторых случаев она крайне важна.

    Поэтому предлагаю альтернативное решение. Возможно, будет полезно:
    var date = new Date(),
        targetDay = 5, // пятница, начиная с вс=0
        targetDate = new Date(),
        delta = targetDay - date.getDay();
    if (delta >= 0) {targetDate.setDate(date.getDate() + delta)}
    else {targetDate.setDate(date.getDate() + 7 + delta)}
    alert(targetDate);

    Возможно, после вычисления понадобится вывести эту искомую дату русскими словами. Вот один из вариантов:
    var targetNumber = targetDate.getDate();
    var targetMonth = targetDate.getMonth();
    switch(targetMonth) {
        case 0: targetMonth = 'января'; break;
        case 1: targetMonth = 'февраля'; break;
        case 2: targetMonth = 'марта'; break;
        case 3: targetMonth = 'апреля'; break;
        case 4: targetMonth = 'мая'; break;
        case 5: targetMonth = 'июня'; break;
        case 6: targetMonth = 'июля'; break;
        case 7: targetMonth = 'августа'; break;
        case 8: targetMonth = 'сентября'; break;
        case 9: targetMonth = 'октября'; break;
        case 10: targetMonth = 'ноября'; break;
        case 11: targetMonth = 'декабря'; break;
    }
    var targetYear = targetDate.getFullYear();
    alert(targetNumber + ' ' + targetMonth + ' ' + targetYear + ' года');


    На практике проверено и работает (пример).
    Ответ написан
    Комментировать