CALCULO ENTRE DATAS
fala galera
tenho este codigo que faz calculos entre datas como eu faço para subtrair finais de semana e feriados
Dim date2Entered As String = dtVencimento.Text
Dim date1Entered As String = mskValorpercela.Text
Try
Dim date2 As Date = Date.Parse(date2Entered)
Dim date1 As Date = Date.Parse(date1Entered)
Dim days As Long = DateDiff(DateInterval.Day, date1, date2)
Dim day As Long = DateDiff(DateInterval.Weekday, date1, date2)
MessageBox.Show([Ô]Dias até hoje: [Ô] & days.ToString)
Catch ex As Exception
MessageBox.Show([Ô]Data invalida: [Ô] & ex.Message)
End Try
grato
tenho este codigo que faz calculos entre datas como eu faço para subtrair finais de semana e feriados
Dim date2Entered As String = dtVencimento.Text
Dim date1Entered As String = mskValorpercela.Text
Try
Dim date2 As Date = Date.Parse(date2Entered)
Dim date1 As Date = Date.Parse(date1Entered)
Dim days As Long = DateDiff(DateInterval.Day, date1, date2)
Dim day As Long = DateDiff(DateInterval.Weekday, date1, date2)
MessageBox.Show([Ô]Dias até hoje: [Ô] & days.ToString)
Catch ex As Exception
MessageBox.Show([Ô]Data invalida: [Ô] & ex.Message)
End Try
grato
Basta você realizar um For Next entre a data 1 e a data 2 e contar quantos dias são sábados e domingos, e após isso, subtrair do total de dias encontrados.
No caso dos feriados você tem de fazer uma lista para comparar com as datas dentro desse mesmo laço For Next
No caso dos feriados você tem de fazer uma lista para comparar com as datas dentro desse mesmo laço For Next
Mais simples ainda
Exemplo.
DateDiff ([Ô]d[Ô],[Ô]2012-01-01[Ô],[Ô]2012-02-10[Ô]) vai me retornar 40 dias
Eu sei que a semana tem 7 dia, logo
40/7 será a qtd de semana existente no resultado.
5.714
Já sei que tenho 5 semanas, mais ainda me sobram alguns pontos.
Mas uma coisa por vez.
Se cada semanda tem 2 dias no fim (Sab e Dom) sei que terei 10 dias de fim de semana.
que é: 5 x 2 = 10 (entre sabados e domingos)
Para saber a diferença lá de cima vamos prosseguir assim.
7 x 5 = 35
40 - 35 = 5
então os [Ô]0,714[Ô] é equivalem a 5 dias.
Agora você vai ter que ver como montar isso:
Se o 1º dia da formula é sabado o 40° dia será quarta.
Assim sendo o resto (aqueles 5 dias) serão Sab, Dom, Seg, Ter e Qua.
Então você tem nesse exemplo, 12 fins de semana.
Espero que você tenha entendido.
E possa simplificar para você.
Exemplo.
DateDiff ([Ô]d[Ô],[Ô]2012-01-01[Ô],[Ô]2012-02-10[Ô]) vai me retornar 40 dias
Eu sei que a semana tem 7 dia, logo
40/7 será a qtd de semana existente no resultado.
5.714
Já sei que tenho 5 semanas, mais ainda me sobram alguns pontos.
Mas uma coisa por vez.
Se cada semanda tem 2 dias no fim (Sab e Dom) sei que terei 10 dias de fim de semana.
que é: 5 x 2 = 10 (entre sabados e domingos)
Para saber a diferença lá de cima vamos prosseguir assim.
7 x 5 = 35
40 - 35 = 5
então os [Ô]0,714[Ô] é equivalem a 5 dias.
Agora você vai ter que ver como montar isso:
Se o 1º dia da formula é sabado o 40° dia será quarta.
Assim sendo o resto (aqueles 5 dias) serão Sab, Dom, Seg, Ter e Qua.
Então você tem nesse exemplo, 12 fins de semana.
Espero que você tenha entendido.
E possa simplificar para você.
E ai cara, beleza?
Ache que a função de cima ficou meio complicada né?
Segue algo mais prático
Dim wDataInical, wDataFinal, wDataAtual As Date
wDataInical = [Ô]2012-01-01[Ô]
wDataFinal = [Ô]2012-02-10[Ô]
wDataAtual = wDataInical
Do While wDataAtual <> wDataFinal
Dim wDiaSemana As String
Dim qtdDias As Integer
If Weekday(wDataAtual) = 1 Or Weekday(wDataAtual) = 7 Then
qtdDias = qtdDias + 1
End If
[ô]Aqui você abre seu Recordset (DataSet)
using ds as new sqlconnection (conexao)
Do While Not ds.read (sei lá agora não lembro bem, mais acho que é isso)
If wDataAtual = rs!Feriado Then
qtdDias = qtdDias + 1
End If
rs.movenext
Loop
using end
wDataAtual = DateAdd([Ô]d[Ô], 1, wDataAtual)
Loop
MsgBox [Ô]Dias: [Ô] & qtdDias & [Ô][Ô]
[txt-color=#e80000]
O importante é a Lógica da coisa.
Boa Sorte[/txt-color]
Ache que a função de cima ficou meio complicada né?
Segue algo mais prático
Dim wDataInical, wDataFinal, wDataAtual As Date
wDataInical = [Ô]2012-01-01[Ô]
wDataFinal = [Ô]2012-02-10[Ô]
wDataAtual = wDataInical
Do While wDataAtual <> wDataFinal
Dim wDiaSemana As String
Dim qtdDias As Integer
If Weekday(wDataAtual) = 1 Or Weekday(wDataAtual) = 7 Then
qtdDias = qtdDias + 1
End If
[ô]Aqui você abre seu Recordset (DataSet)
using ds as new sqlconnection (conexao)
Do While Not ds.read (sei lá agora não lembro bem, mais acho que é isso)
If wDataAtual = rs!Feriado Then
qtdDias = qtdDias + 1
End If
rs.movenext
Loop
using end
wDataAtual = DateAdd([Ô]d[Ô], 1, wDataAtual)
Loop
MsgBox [Ô]Dias: [Ô] & qtdDias & [Ô][Ô]
[txt-color=#e80000]
O importante é a Lógica da coisa.
Boa Sorte[/txt-color]
Olá
Pode-se saber qual é o objectivo?
Depende do que queira fazer.
Pode-se saber qual é o objectivo?
Depende do que queira fazer.
desculpe a demora para responder estava bem enrolado aqui preciso montar sla. VELDRAME pq sql connection
Tópico encerrado , respostas não são mais permitidas