Вывод последнего дня текущего месяца на Javascript

Попалась интересная задачка, на баннере нужно было выводить «Акция действует до (тут последний день месяца)», решил сделать это на Javascript, ну чтоб не лазить каждый раз в код для правок, вот что получилось

var date = new Date();
var lastDayDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);
var lastDay = lastDayDate.toLocaleString('RU', {day: 'numeric'});
var monthes = ['ЯНВАРЯ','ФЕВРАЛЯ','МАРТА', 'АПРЕЛЯ','МАЯ','ИЮНЯ','ИЮЛЯ', 'АВГУСТА', 'СЕНТЯБРЯ', 'ОКТЯБРЯ', 'НОЯБРЯ', 'ДЕКАБРЯ'];
var result = lastDay+' '+monthes[date.getMonth()];
document.write(result);

Самая важная строка в коде, это строка номер 2, в ней создается нужный нам объект даты через конструктор в нем используется текущий год, следующий месяц, и нулевой день. Т.к нулевого дня не существует, то JS сдвигает дату на 1 день назад и мы получаем последний день текущего месяца.

В следующей строке форматируем вывод — оставляем вывод только дня, потому что JS выводит месяц в именительном падеже, т.е на баннере будет «ДО 31 ЯНВАРЬ СКИДКА 10%», что выглядит косячно, и именно по этом чуть ниже есть массив месяцев в родительном падеже.

Затем клеим нужный результат в одну переменную и выводим.

Например, в моем случае,  нужно было выводить в элемент с классом «lastday», то

x=document.getElementsByClassName("lastday");  // Find the elements
    for(var i = 0; i < x.length; i++){
    x[i].innerText=result;    // write text
    }

Живой пример https://jsfiddle.net/Reset5/o1gdqnwe/

P.S. Если нужен еще и год, то меняем 5 строку так

var result = lastDay+' '+monthes[date.getMonth()]+' '+date.getFullYear();

Знаете еще варианты? Пишите в комментариях.

6 thoughts on “Вывод последнего дня текущего месяца на Javascript”

  1. Добрый день!
    У меня что то не работает.
    Скрипт

    var date = new Date();
    var lastDayDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);
    var lastDay = lastDayDate.toLocaleString(‘ru’, {day: ‘numeric’});
    var monthes = [’01’,’02’,’03’, ’04,’05’,’06’,’07’, ’08’, ’09’, ’10’, ’11, ’12’];
    var result = lastDay+’ ‘+monthes[date.getMonth()]+’ ‘+date.getFullYear();
    x=document.getElementsByClassName(«lastday»);
    for(var i = 0; i < x.length; i++){
    x[i].innerText=result;
    }

    Вывод

    Подскажите в чем проблема?

Добавить комментарий

Ваш e-mail не будет опубликован.