Попалась интересная задачка, на баннере нужно было выводить «Акция действует до (тут последний день месяца)», решил сделать это на 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();
Знаете еще варианты? Пишите в комментариях.
У вас буква «е» в имени переменной на кириллице (видно по подсветке кода).
Вот спасибо!
В четвертой строке еще «var monthEs =» 😉
емае, вот теперь вроде все исправил
Спасибо, дружище! )
Добрый день!
У меня что то не работает.
Скрипт
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;
}
Вывод
Подскажите в чем проблема?