Javascript - Último dia do mês
by Luiz Paulo | novembro 14, 2008 | 15 Comments »Essa semana, eu precisei de uma solução em Javascript para encontrar o "último dia do mês" ou "quantidade de dias do mês" como preferir. Consultei o Google e encontrei algumas soluções, algumas delas mais simples e outras bem criativas.
Achei o assunto interessante e resolvi divulgar aqui para quem precisar utilizar.
Primeiro vou postar as soluções sérias para o pessoal que está pesquisando e precisa utilizar em seu código
Soluções simples
Exemplo longo (função):
function daysInMonth(month,year) { var m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if (month != 2) return m[month - 1]; if (year % 4 != 0) return m[1]; if (year % 100 == 0 && year%400 != 0) return m[1]; return m[1] + 1; }
Exemplo curto (função):
Aqui está a grande sacada do javaScript, que interpreta o 0(zero) como "o dia antes do dia primeiro" que obviamente é o último dia do mês anterior.
function daysInMonth(month,year) { var dd = new Date(year, month, 0); return dd.getDate(); }
Exemplo curto (inline):
var lastDay = (new Date(year, month, 0)).getDate();
Soluções criativas
Não se assustem, mas as soluções citadas abaixo funcionam!
Solução utilizando Switch:
function getLastDayOfMonth(month,year) { var day; switch(month) { case 1 : case 3 : case 5 : case 7 : case 8 : case 10: case 12: day = 31; break; case 4 : case 6 : case 9 : case 11: day = 30; break; case 2 : if( ( (year % 4 == 0) && ( year % 100 != 0) ) || (year % 400 == 0) ) day = 29; else day = 28; break; } return day; }
Essa é legal
function anoBissexto(anoCompleto) { if(!(anoCompleto%4) && (anoCompleto%100 || !(anoCompleto%400))) return true; return false; } function diasNoMes(mes,ano) { var var_type=typeof mes; if(var_type != "number" && var_type != "string") return false; if(var_type == "number" && (mes > 11 || mes < 0) && !isInt(mes)) return false; var eng_args_allowed = "january-february-march-april-may-june-july-august-september-october-november-december"; var bra_args_allowed = "janeiro-fevereiro-marçomarco-abril-maio-junho-julho-agosto-setembro-outubro-novembro-dezembro"; var vet_eng_args_allowed = eng_args_allowed.split("-"); var vet_bra_args_allowed = bra_args_allowed.split("-"); var datahj = new Date(); var anohj = datahj.getFullYear(); var dias = [31,anoBissexto(ano)?29:28,31,30,31,30,31,31,30,31,30,31]; if(var_type == "string") { indice_eng = keyPosMatch(vet_eng_args_allowed,mes); indice_bra = keyPosMatch(vet_bra_args_allowed,mes); if(indice_eng>=0) return dias[indice_eng]; if(indice_bra>=0) return dias[indice_bra]; return false; } else return dias[mes]; }
Façam bom proveito!
Posts Relacionados
Categorias: Desenvolvimento web, JavaScript, Linguagens
Tags: , calendar, code, date, example, javascript







