Último dia do mês em várias linguagens

by Luiz Paulo | dezembro 25, 2008 | 1 Comment »

Como prometi anteriormente, vou criar um post com as soluções sobre como pegar o último dia dos mês. Todas as soluções postadas aqui, foram comentadas no post: Javascript - Último dia do mês onde falei sobre esse assunto.

Bem, não tive como testar todos, até por que tem linguagem aí embaixo que nunca utilizei :-)
Se tiver algum erro, fiquem a vontade para comentar que eu acerto, blz?

Segue as soluções e seus respectivos criadores / postadores.

Último dia do mês em PHP:
Comment: Luiz Paulo

<?php
	$year = 2008;
	$month = 2;
	echo date("t", mktime(0, 0, 0, $month, 1, $year)); 
?>

Último dia do mês em JAVA:
Comment: Felipe Zappala

	System.out.println(new SimpleDateFormat("dd").format(new Date(2008,2,0)));
	System.out.println(new GregorianCalendar(2008,2,0).get(Calendar.DAY_OF_MONTH));

Último dia do mês em Python:
Comment: Rodrigo Cacilhas

	last_day = calendar.monthrange(year, month)[1]

Último dia do mês em Lua:
Comment: Rodrigo Cacilhas

function lastday(year, month)
    return 0 + os.date(
        "%d",
        os.time {
            year = year
            month = month + 1
            day = 0
        }
    )
end

Último dia do mês em Objective-C (do Mac OS X):
Comment: Rodrigo Cacilhas

int lastday(int year, int month) {
    id date = [NSDate
        dateWithString: [NSString
            stringWithFormat: @"%d-%d-01 00:00:00 +000", year, month
        ]
    ];
 
    [date addTimeInterval: -86400.];
 
    id day = [date
        descriptionWithCalendarFormat: @"%d"
        timeZone: [NSTimeZone defaultTimeZone]
        locale: nil
    ];
 
    return [day intValue];
}

Último dia do mês em Rails:
Comment: Valdinei dos Santos

d = Date.new(2008,11)
d.end_of_month
=> Sun, 30 Nov 2008

Último dia do mês em Smalltalk:
Comment: Rodrigo Cacilhas

lastDayOfMonth: m year: y
    | aux |
 
    m := m + 1.
    (m = 13) ifTrue: [
        m := 1.
        y := y + 1.
    ].
 
    aux := Date year: y month: m day: 1.
    aux := aux addDays: -1.
 
    ↑ aux dayOfMonth
!

Último dia do mês em Common Lisp:
Comment: Rodrigo Cacilhas

(defun last-day-of-month (y m)
  (setq m (+ m 1))
  (when (= m 13)
    (setq m 1)
    (setq y (+ y 1)))
  (multiple-value-bind
    (*sec* *min* *hour* *day* *month* *year* *date-of-week* *dst-p* *tz*)
    (decode-universal-time
      (-
        (encode-universal-time 0 0 0 1 m y)
        86400))
    *day*))

Último dia do mês em Fortran-90:
Comment: Guilherme Gualberto

program Hora_e_data
interger ,parameter:: n = 3
interger :: data(n),horaSys(n)
call idate(data)
! data(1)=dia, data(2)=mes data(3)=ano
call itime(horaSys)
! horaSys(1)=hora, horaSys(2)=minute,horaSys(3)=second
write(*,'('Date ', i2.2, '/', i2.2, '/', i4.4, '; time ',i2.2, ':', i2.2, ':', i2.2)')data(2), data(1), data(3), now
endprogram

Último dia do mês em C#:
Comment: Fabio Caldas

int year = 2008;
int month = 09;
int daysInMonth = DateTime.DaysInMonth(year,month);

Grande abraço aos amigos que postaram! Agradeço a todos... Tenho certeza que esses códigos ajudarão a muitas pessoas :-)

Categorias: Linguagens, Tecnologia
Tags: , , , , , , , , , , ,

Favicon - Ícones personalizados nos browsers

by Luiz Paulo | dezembro 20, 2008 | No Comments »

Favicons são pequenas imagens no formato .ico normalmente possuem o tamanho de 16x16. Essas imagens são utilizadas para facilitar a identificação de um site em abas ou favoritos. Muitos favicons são versões minimizadas de logotipos que fazem referência a marca / imagem da empresa.

Como comentei acima, os mais normal é salvar as imagens em formato .ico , mas alguns browsers também reconhecem o formato .gif.

Inserindo favicon no formato ICO

<html>
	<head>
		<title>Inserindo favicon no formato ICO</title>
		<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
	</head>
	<body>
		...
	</body>
</html>

Inserindo favicon no formato GIF.
* Esse formato não funciona no Internet Explorer.

<html>
	<head>
		<title>Inserindo favicon no formato GIF</title>
		<link rel="shortcut icon" type="image/gif" href="favicon.gif" />
	</head>
	<body>
		...
	</body>
</html>

Acesse também: 21 melhores geradores de favicon da Internet, você encontrará vários geradores de icones web.

Categorias: Browser, CheatSheet, Desenvolvimento web, HTML
Tags: , , , , , , ,

Javascript - Retirando espaços de string (função trim)

by Luiz Paulo | dezembro 4, 2008 | 4 Comments »

Veja abaixo algumas soluções para retirar espaços do início e final de strings.

Exemplos simples

Exemplo curto (funções com expressão regular):

	//trim completo
	function trim(str) {
		return str.replace(/^\s+|\s+$/g,"");
	}
 
	//left trim
	function ltrim(str) {
		return str.replace(/^\s+/,"");
	}
 
	//right trim
	function rtrim(str) {
		return str.replace(/\s+$/,"");
	}
 
	alert(trim("           TEXTO          "));

Exemplo curto (métodos da string com expressão regular):
Essa solução é bem mais elegante!

	//trim completo
	String.prototype.trim = function () {
		return this.replace(/^\s+|\s+$/g,"");
	}
 
	//left trim
	String.prototype.ltrim = function () {
		return this.replace(/^\s+/,"");
	}
 
	//right trim
	String.prototype.rtrim = function () {
		return this.replace(/\s+$/,"");
	}
	alert("           TEXTO          ".trim());

Outras soluções

Exemplo longo

	function trim (str)
	{
		var whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
		for (var i = 0; i < str.length; i++)
		{
			if (whitespace.indexOf(str.charAt(i)) == -1)
			{
				str = str.substring(i);
				break;
			}
		}
 
		for (i = str.length - 1; i >= 0; i--)
		{
			if (whitespace.indexOf(str.charAt(i)) == -1)
			{
				str = str.substring(0, i + 1);
				break;
			}
		}
	    return whitespace.indexOf(str.charAt(0)) == -1 ? str : '';
	}

Outro exemplo

	function isWhitespace(charToCheck) {
		var whitespaceChars = " \t\n\r\f";
		return (whitespaceChars.indexOf(charToCheck) != -1);
	}
 
	//left trim
	function ltrim(str) {
		for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
		return str.substring(k, str.length);
	}
 
	//right trim
	function rtrim(str) {
		for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
		return str.substring(0,j+1);
	}
 
	//trim completo
	function trim(str) {
		return ltrim(rtrim(str));
	}

Caso queira se aprofundar no assunto, aconselho a leitura do artigo Faster JavaScript Trim que mostra vários testes de performance no IE e FF.

Façam bom proveito!

Categorias: Desenvolvimento web, JavaScript, Linguagens
Tags: , , , ,

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!

Categorias: Desenvolvimento web, JavaScript, Linguagens
Tags: , , , , ,

Traduzindo textos direto no gTalk

by Luiz Paulo | outubro 9, 2008 | 4 Comments »

Google Talkengine
Um recurso muito útil para quem precisa traduzir textos constantemente é a tradução de textos diretamente no Google Talk.

Já utilizo esse software há algum tempo como alternativa ao MSN além de muito (muito, muito...) mais leve e estável, as mensagens chegam quase que instantâneas, enquanto o MSN, dependendo do dia, você pode mandar uma mensagem e demorar horas. O serviço de voz também é muito bom.

Para utilizar esse recurso, basta adicionar um contato a seu Google Talk, e enviar as mensagens (Simples assim! )

Por exemplo, para traduzir de inglês para português:

Adicione como contato: en2pt@bot.talk.google.com

Envie mensagens em inglês e ele te responderá a tradução em português.

Legal, não!?

Testei esse recurso em en2pt e pt2en e funcionou perfeitamente. Não pesquisei se traduz de qualquer linguagem para qualquer linguagem, mas fica a dica!

Categorias: Artigo, Ferramentas, Java, Linguagens
Tags: , , , , ,

Próximos posts »

 

Sobre

Foto Luiz Paulo

Sou desenvolvedor web desde 2000, atuei em grandes projetos web2.0. Atualmente trabalho na Automatos junto à equipe de site desenvolvendo projetos web2.0 e utilizando como server-side a linguagem java.

Para saber mais sobre mim, acesse Meus Links ›


Valid XHTML 1.0 Strict Valid CSS!

Luiz Paulo | tecnologia web