DATEDIFF EM HORAS UTEIS
Bom dia!!
Alguem tem alguma função pronta que faça o a diferenca de duas datas ex: 22/04/2011 7:30 a 30/05/2011 22:00
No caso teria que me retornar a diferenca das datas em horas desconsiderando sabado e domingos..
Abrs
Alguem tem alguma função pronta que faça o a diferenca de duas datas ex: 22/04/2011 7:30 a 30/05/2011 22:00
No caso teria que me retornar a diferenca das datas em horas desconsiderando sabado e domingos..
Abrs
CalculaHora(txtDataInicial & [Ô] [Ô] & txtHoraInicial, txtDataFinal & [Ô] [Ô] & txtHoraFinal)
Function CalculaHora(HrIni, HrFim) As Double
Dim dblDifHoras As Double
If IsNull(HrIni + HrFim) Then Exit Function
dblDifHoras = DateDiff([Ô]n[Ô], HrIni, HrFim)
CalculaHora = dblDifHoras / 60
End Function
Tenta isso...pra mim funciona.. peguei no Macoratti
Function CalculaHora(HrIni, HrFim) As Double
Dim dblDifHoras As Double
If IsNull(HrIni + HrFim) Then Exit Function
dblDifHoras = DateDiff([Ô]n[Ô], HrIni, HrFim)
CalculaHora = dblDifHoras / 60
End Function
Tenta isso...pra mim funciona.. peguei no Macoratti
vc quer só em horas? ou dias e horas?
Nao tinha visto o [Ô]desconsiderando sabados e domingos[Ô].
Desconsidere..
Uso essa rotina para uma usina q nao tem dias exatos de folga. Virou - trabalhou.
Desconsidere..
Uso essa rotina para uma usina q nao tem dias exatos de folga. Virou - trabalhou.
Eu fiz essa de presente :D
rsrsr .. eu ja tive que fazer um simulador de carregamento, e criei esta função ... pode usá-la
VB.NET
Desculpe não tinha visto que era vb6 então, fiz os ajustes para VB6
rsrsr .. eu ja tive que fazer um simulador de carregamento, e criei esta função ... pode usá-la
VB.NET
Dim ini_tim As Date = [Ô]08:00[Ô]
Dim fim_tim As Date = [Ô]18:00[Ô]
[ô][ô][ô] <summary>
[ô][ô][ô] Calcula a diferença entre 2 datas considerando horario comercial e finais de semana
[ô][ô][ô] </summary>
[ô][ô][ô] <param name=[Ô]date1[Ô]>data de inicio</param>
[ô][ô][ô] <param name=[Ô]date2[Ô]>data de final</param>
[ô][ô][ô] <param name=[Ô]considerwk[Ô]>define se os finais de semana devem ser considerador</param>
[ô][ô][ô] <returns></returns>
[ô][ô][ô] <remarks></remarks>
Public Function Calculate(ByVal date1 As Date, ByVal date2 As Date, Optional ByVal considerwk As Boolean = True) As Decimal
[ô]//RESULTADO
Dim _res As Integer
[ô]//ENQUANTO A DATA NAO CHEGAR
Do While date1 <= date2
[ô]//VERIFICA SE ESTA DENTRO DO INTERVALO DE HORAS
If Hour(date1) >= Hour(ini_tim) And Hour(date1) <= Hour(fim_tim) Then
[ô]//VERIFICA SE A FLAG PARA IGNORAR OS FDS ESTA ATIVA
If considerwk = True Then
[ô]//SE A DATA INCREMENTADA NAO FOR SABADO E NEM DOMINGO
If Weekday(date1) <> vbSaturday And Weekday(date1) <> vbSunday Then
[ô]//INCREMENTA O RESULTADO
_res += 1
End If
Else
[ô]//INCREMENTA O RESULTADO
_res += 1
End If
End If
[ô]//ADICIONA UM MINUTO A DATA
date1 = DateAdd([Ô]n[Ô], 1, date1)
Loop
[ô]//RETORNA A DIFERENÇA EM HORAS
Return CDec(_res / 60)
End Function
Desculpe não tinha visto que era vb6 então, fiz os ajustes para VB6
Private Const ini_tim As Date = [Ô]08:00[Ô]
Private Const fim_tim As Date = [Ô]18:00[Ô]
[ô][ô][ô] <summary>
[ô][ô][ô] Calcula a diferença entre 2 datas considerando horario comercial e finais de semana
[ô][ô][ô] </summary>
[ô][ô][ô] <param name=[Ô]date1[Ô]>data de inicio</param>
[ô][ô][ô] <param name=[Ô]date2[Ô]>data de final</param>
[ô][ô][ô] <param name=[Ô]considerwk[Ô]>define se os finais de semana devem ser considerador</param>
[ô][ô][ô] <returns></returns>
[ô][ô][ô] <remarks></remarks>
Public Function Calculate(ByVal date1 As Date, ByVal date2 As Date, Optional ByVal considerwk As Boolean = True) As Double
[ô]//RESULTADO
Dim res As Double
[ô]//ENQUANTO A DATA NAO CHEGAR
Do While date1 <= date2
[ô]//VERIFICA SE ESTA DENTRO DO INTERVALO DE HORAS
If Hour(date1) >= Hour(ini_tim) And Hour(date1) <= Hour(fim_tim) Then
[ô]//VERIFICA SE A FLAG PARA IGNORAR OS FDS ESTA ATIVA
If considerwk = True Then
[ô]//SE A DATA INCREMENTADA NAO FOR SABADO E NEM DOMINGO
If Weekday(date1) <> vbSaturday And Weekday(date1) <> vbSunday Then
[ô]//INCREMENTA O RESULTADO
res = res + 1
End If
Else
[ô]//INCREMENTA O RESULTADO
res = res + 1
End If
End If
[ô]//ADICIONA UM MINUTO A DATA
date1 = DateAdd([Ô]n[Ô], 1, date1)
Loop
[ô]//RETORNA A DIFERENÇA EM HORAS
Calculate = CDbl(res / 60)
End Function
Tópico encerrado , respostas não são mais permitidas