Hoje, enquanto eu lia algumas matérias na Internet, me deparei com uma matéria relacionada ao ano bissexto e então pensei em elaborar uma função simples para poder calcular se o ano é bissexto ou não. Isso pode ser útil, por exemplo, para montar um calendário personalizado, para o qual precisamos saber quais anos são bissextos para podermos preencher corretamente o mês de fevereiro em uma combobox ou listbox ou mesmo em uma tabela. Aí você diz: "isso é fácil, todo mundo sabe que o ano bissexto ocorre de quatro em quatro anos". Bom, parcialmente correto. Temos que nos lembrar que são de quatro em quatro anos para anos múltiplos de quatro. Bom, muita gente sabe disso, mas não são apenas essas as regras que precisamos saber. Veja, abaixo, o que precisamos saber:
1 - o ano bissexto ocorre de quatro em quatro anos;
2 - o ano bissexto ocorre nos anos múltiplos de quatro;
3 - a regra acima não se aplica para anos que terminam em "00" exceto quando for múltiplo de 400.
Assim sendo, tudo que precisaremos é retornar o resto do ano dividido por 4 ou por 400 e tambem por 100. Nos dois primeiros casos, o ano será bissexto se o resto for 0. No terceiro caso, será bissexto se o resto for diferente de 0 para 100 e igual a 0 para 4. Veja a nossa funçãozinha abaixo:
Pronto, agora é só preencher a combo dos dias para quando o mês for fevereiro:
Obviamente temos os outros meses do ano. A ideia, nesse caso, seria ter uma variável para verificar o mês e colocar o número de dias correspondente e, para o fevereiro, adicionar a função acima. Obviamente, tambem, há outras formas de se fazer a mesma coisa, mas deixo essa dica para ajudar, tambem, a entender a formação do ano bissexto.
Mas, por que temos o ano bissexto de 4 em 4 anos menos nos anos múltiplos de 100? Bom, é porque o ano solar tem um pouco mais de 365 dias mas não chega a 6 horas de diferença. Se fosse 6 horas redondo, bastaria acrescentar um dia a cada 4 anos, mas como falta alguns minutos para seis horas, essa diferença é tirada nos anos múltiplos de 100. O ano solar é igual a 365,2425 dias. Se fosse 365,25, aí sim, seriam exatamente seis horas a mais. Essa é uma curiosidade que muita gente não sabia, talvez pelo fato de que nossa expectativa de vida, no geral, seja inferior a um século.
Espero que meu pequeno artigo seja útil.
1 - o ano bissexto ocorre de quatro em quatro anos;
2 - o ano bissexto ocorre nos anos múltiplos de quatro;
3 - a regra acima não se aplica para anos que terminam em "00" exceto quando for múltiplo de 400.
Assim sendo, tudo que precisaremos é retornar o resto do ano dividido por 4 ou por 400 e tambem por 100. Nos dois primeiros casos, o ano será bissexto se o resto for 0. No terceiro caso, será bissexto se o resto for diferente de 0 para 100 e igual a 0 para 4. Veja a nossa funçãozinha abaixo:
Dim Dias As Integer
If Me.cboAno Mod 400 = 0 Or (Me.cboAno Mod 4 = 0 And Me.cboAno Mod 100 <> 0) Then
Dias = 29
Else
Dias = 28
End If
Pronto, agora é só preencher a combo dos dias para quando o mês for fevereiro:
Dim TDias As Integer
Me.cboDias.RowSource = ""
Me.cboDias.RowSourceType = "value list"
For TDias = 1 To Dias
Me.cboMeses.AddItem TDias
Next
Obviamente temos os outros meses do ano. A ideia, nesse caso, seria ter uma variável para verificar o mês e colocar o número de dias correspondente e, para o fevereiro, adicionar a função acima. Obviamente, tambem, há outras formas de se fazer a mesma coisa, mas deixo essa dica para ajudar, tambem, a entender a formação do ano bissexto.
Mas, por que temos o ano bissexto de 4 em 4 anos menos nos anos múltiplos de 100? Bom, é porque o ano solar tem um pouco mais de 365 dias mas não chega a 6 horas de diferença. Se fosse 6 horas redondo, bastaria acrescentar um dia a cada 4 anos, mas como falta alguns minutos para seis horas, essa diferença é tirada nos anos múltiplos de 100. O ano solar é igual a 365,2425 dias. Se fosse 365,25, aí sim, seriam exatamente seis horas a mais. Essa é uma curiosidade que muita gente não sabia, talvez pelo fato de que nossa expectativa de vida, no geral, seja inferior a um século.
Espero que meu pequeno artigo seja útil.