Я видел, что код-техника, трюк, рубить (как вы хотите назвать его) на: https://codereview.stackexchange.com/questions/142706/take-a-specified-weekday-and-check-if-it-falls-on-the-remaining-days-of-the-cur Просмотр КодаJavaScript - странное использование Date.getDate() для получения количества дней в месяц. Как это работает?
В 6-й строке метод getDate()
используется для того чтобы получить количество дней в течение месяца. Месяц, указанный в качестве предыдущего параметра.
Я играл с этим методом, и это, кажется, работает:
var d = new Date();
var sep = new Date(d.getYear(), (d.getMonth() + 1), 0).getDate();
var oct = new Date(d.getYear(), (d.getMonth() + 2), 0).getDate();
var nov = new Date(d.getYear(), (d.getMonth() + 3), 0).getDate();
var dec = new Date(d.getYear(), (d.getMonth() + 4), 0).getDate();
var jan = new Date(d.getYear(), (d.getMonth() + 5), 0).getDate();
console.log(d.toLocaleString('en-US', { month: 'long' }));
console.log('%s %s %s %s %s', sep, oct, nov, dec, jan);
Но как это возможно, что это работает?
Я бы ожидал, что конструктор Date примет только действительные целые числа.
Можно получить любое целое число, которое вам нравится. Это не исключение. НО: Возвращенные значения - это лома.
var d = new Date();
var nov = new Date(d.getYear(), (d.getMonth() + 3), 31).getDate(); // November has 30 days.
console.log('%s', nov); // => 31
var nov = new Date(d.getYear(), (d.getMonth() + 3), -21).getDate(); // November has 30 days.
console.log('%s', nov); // 9
var nov = new Date(d.getYear(), (d.getMonth() + 3), 301).getDate(); // November has 30 days.
console.log('%s', nov); // 27
Может кто-нибудь с некоторыми прозрений объяснить, что там происходит?
А, ладно. Я вызываю какую-то «обертку». Правильно? – bew5
Да, это правильно. –