Отримати кількість днів у місяці в JavaScript не має стандартного метода у Date. Розглянемо способи отримання кількість днів у місяці.
Визначаємо кількість днів у місяці за номером місяця. Зверніть увагу що нумерація місяця починається з 1 до 12. Параметр year використовується для лютого місяця щоб взнати чи високосний рік чи ні. Якщо рік не було вказано тоді використовується теперішній рік.
function daysInMonth(month, year){
month=(month!=undefined?month:(new Date()).getMonth()+1);
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
break;
case 4:
case 6:
case 9:
case 11:
return 30;
break;
case 2:
var y=year?year:(new Date()).getFullYear();
return (y%4==0 && y%100!=0) || y%400==0 ?29:28;
break;
}
}
var d=daysInMonth(7);
alert('Липень має днів: '+d);
Створимо метод в Date який повертає кількість днів у місяці за допомогою прототипу. Визначаємо кількість днів по номеру місяця з метода Date.getMonth().
Date.prototype.daysInMonth=function(){
switch(this.getMonth()){
case 0:
case 2:
case 4:
case 6:
case 7:
case 9:
case 11:
return 31;
break;
case 3:
case 5:
case 8:
case 10:
return 30;
break;
case 1:
var y=d.getFullYear();
return (y%4==0 && y%100!=0) || y%400==0 ?29:28;
break;
}
}
var d=new Date();
alert( 'в поточному місяці днів: '+d.daysInMonth() );
Вказати день 0 наступного місяця в методі Date.setDate().
Параметр month приймає номер місяці від 1 до 12.
function daysInMonth(month, year){
month=month+1;
if(month>12)month=month-12;
year=year!=undefined?year:(new Date().getFullYear());
var d=new Date(year+'-'+month+'-01');
d.setDate(0);
return d.getDate();
}
var d=daysInMonth(2);
alert('Лютий має днів '+d);
function daysInMonth(month, year){
year=year!=undefined?year:(new Date().getFullYear());
var d1=new Date(year, month-1, 1); //month-1 так як вказується від 0 до 11
var d2=new Date(year, month, 1); //на 1 місяць більша дата
return (d2.getTime()-d1.getTime())/86400000; //86400000 це 1000*3600*24
}
var d=daysInMonth(1);
alert('Січень має днів: '+d);