Несколько способов определения количества дней в месяце
Почти всегда существует не один способ сделать нечто. Например, существует, по крайней мере, 3 способа узнать количество дней в месяце.
1. Через заранее приготовленный список Многословный, но самый быстрый Date.prototype.isLeapYear = function() { var y = this.getFullYear(); return y % 4 == 0 && y % 100 != 0 || y % 400 == 0; }; Date.prototype.getDaysInMonth = function() { return arguments.callee[this.isLeapYear() ? 'L' : 'R'][this.getMonth()]; }; // durations of months for the regular year Date.prototype.getDaysInMonth.R = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // durations of months for the leap year Date.prototype.getDaysInMonth.L = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 2. Установкой на заведомо некорректный день Короче, но дольше Date.prototype.getDaysInMonth = function () { var here = new Date(this.getTime()); here.setDate(32); return 32 - here.getDate(); }; 3. Почти тоже самое что и перед этим Самый короткий и почти такой же долгий как предыдущий Date.prototype.getDaysInMonth = function() { return (new Date(this.getFullYear(), this.getMonth() + 1, 0)).getDate(); }; |
для кого предназначается данный пост?
если для новичков, то некоторые из них могут даже не сообразить как использовать этот код, так как не знакомы с протитипным наследованием, и работой с this если для уже продолжающих, то они и сами смогут это сделать с нуля |
Gvozd, расчитано на размещение ссылки на форуме, смотри линк и ник автора :)
|
Часовой пояс GMT +3, время: 13:38. |