// Определим текущий месяц и год
var month = parseInt(new Date().getMonth());
var year = new Date().getFullYear();
// Определим количество дней в месяце
var total_days = 32 - new Date(year, month, 32).getDate();
console.log(total_days);
Работает правильно, но что происходит? Как работает строчка где var total_days =
вообще не понимаю, узнать дату на 32-й день?
Работа магии основана на том что если в конструктор даты передать количество дней больше чем в текущем месяце, то дата автоматически промотается в следующий месяц.
То есть
new Date(2017, 7, 33)
Вернет не 33 августа а второе сентября.
getDate()
вернет порядковый номер дня в месяце соответственно. То есть 2 - для второго сентября, 1 - для первого.
Соответственно передав 32 в конструктор даты для месяца с 30 днями - мы придем на второе число, для месяца с 31 днями - на первое. С 28 днями - на четвертое. Это число и вычитаем.
Соответственно эта магия завязана на неочевидное (хоть и описанное в спецификации) свойство конструктора даты, и я рекомендовал бы такое щедро комментировать.
Полагаю, что Date(year, month, 32) создаёт дату в следующем месяце. Если в этом месяце было 30 дней, то 32 дня от начала текущего месяца - это 2 число следующего. Если в месяце 31 день - это 1 число. Соответственно, getDate() возвращает текущий день, при вычитании из 32 получаем 30 или 31 день в этом месяце.
Date
принимает 3 параметра - год, месяц и день месяца.
Передать день месяца больший чем есть в указанном месяце то Date автоматически добавит новый месяц (как если бы передавалось количество дней с начала месяца).
Тоесть к примеру 2017-01-32 - будет 2017-02-01 а 2017-02-32 - будет 2017-03-04
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
ПриветДля того, чтобы пользователь видел красивый прелоадер загрузки сайта, я использую следующий код:
ПриветНачинаю работать с Webpack и сейчас мой конфиг выглядит так:
Мне нужно отправить запрос на url с некоторыми параметрами один раз, когда два поля являются валиднымиА далее уже вызывать этот же метод , но с другими...