Javascript – Último dia do mês

Postado por: Luiz Paulo em

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) return dias[indice_eng];
		if(indice_bra>=0) return dias[indice_bra];
		return false;
	}
	else return dias[mes];
}

Façam bom proveito!

Posts Relacionados

Confira também outros artigos interessantes postados aqui no blog.

Sobre Luiz Paulo

Luiz Paulo dos Prazeres é desenvolvedor web desde 2000. Atualmente trabalha na Automatos junto à equipe de site desenvolvendo projetos web2.0 e utilizando como server-side a linguagem java.

2 Responses to “Javascript – Último dia do mês”

  1. Não era mais simples pegar o primeiro dia do mês seguinte e retroceder um dia?

  2. Luiz Paulo, legal, já havia visto estas dicas em seu blog.
    Agora só uma frase que ficou meio confusa “…obviamente é o último dia do mês anterior”, não seria melhor omitir este pedaço?

    Quando se coloca zero, sim, ele entende que é o dia antes do primeiro, mas do mesmo mês.

    new Date(2009, 3, 0)

    retornará um objeto Date referente à 31/03/2009 e não 28/02/2009.

Leave a Reply