Olá caros leitores.
Dando continuidade a esta série de artigos sobre trabalhos com datas, hoje vamos construir uma função que nos informa quantos sábados e domingos temos em um determinado periodo de datas.
Para quem ainda não leu o artigo anterior desta série, pode fazê-lo pelo link abaixo:
II – Saber quantos sábados existem entre duas datas informadas.
Supondo que temos aulas de inglês todos os sábados e queremos saber quantos sábados (aulas) ainda teremos até o final do ano. Temos duas datas, inicial (hoje: 1/11/2009) e final (31/12/2009).
Podemos montar a seguinte função.
Function TotalDeSabadosNoPeriodo(dDataInicial As Date, dDataFinal As Date) As Integer
Dim TotalDeDias As Integer
Dim TotalDeDiasNoPeriodo As Integer
Dim iContDia As Integer
Dim dDataAnalisada As Date
TotalDeDias = 1 + DateDiff("d", dDataInicial, dDataFinal)
dDataAnalisada = dDataInicial
TotalDeDiasNoPeriodo = 0
For iContDia = 1 To TotalDeDias
If Weekday(dDataAnalisada) = vbSaturday Then
TotalDeDiasNoPeriodo = TotalDeDiasNoPeriodo + 1
End If
dDataAnalisada = DateAdd("d", 1, dDataAnalisada)
Next iContDia
TotalDeSabadosNoPeriodo = TotalDeDiasNoPeriodo
End Function
Para chamar a função, fazemos assim:
Msgbox TotalDeSabadosNoPeriodo(“1/11/2009″,”31/12/2009”)
O resultado será 8.
A função interna que nos ajuda a descobrir o dia da semana é a função Weekday. Nossa estratégia de algorítimo é fazer um loop percorrendo todas as datas e analisando quais delas são sábado e incrementando num contador. Simples né.
III – Saber quantos domingos existem entre duas datas informadas.
Não há grandes diferenças para se obter esta informação com referência aos domingos. O detalhe está na propriedade retornada pela função Weekday, que agora será VbSunday.
Utilizando as mesmas datas do exeplo anterior, temos: duas datas, inicial (hoje: 1/11/2009) e final (31/12/2009).
Podemos montar a seguinte função.
Function TotalDeDomingosNoPeriodo(dDataInicial As Date, dDataFinal As Date) As Integer
Dim TotalDeDias As Integer
Dim TotalDeDiasNoPeriodo As Integer
Dim iContDia As Integer
Dim dDataAnalisada As Date
TotalDeDias = 1 + DateDiff("d", dDataInicial, dDataFinal)
dDataAnalisada = dDataInicial
TotalDeDiasNoPeriodo = 0
For iContDia = 1 To TotalDeDias
If Weekday(dDataAnalisada) = vbSunday Then
TotalDeDiasNoPeriodo = TotalDeDiasNoPeriodo + 1
End If
dDataAnalisada = DateAdd("d", 1, dDataAnalisada)
Next iContDia
TotalDeDomingosNoPeriodo = TotalDeDiasNoPeriodo
End Function
Para chamar a função, fazemos assim:
Msgbox TotalDeDomingosNoPeriodo(“1/11/2009″,”31/12/2009”)
O resultado será 9.
Até a próxima, amigos.
3 comentários em “Um pouco mais sobre datas (Parte 2)”