CALCULO DE HORAS
Olá amigos tudo bem?
preciso calcular o tempo de estimado de produção de uma peça.
o item leva 22 hora para ser produzido, a empresa trabalha das 7:00 as 17:00 de seg a sexta.
como faço o calculo :
com Hora Inicial + 22 horas para produzir - (hora noturna 17:01 as 6:59 e fins de semana) = dia e hora do termino.
desde já agradeço
preciso calcular o tempo de estimado de produção de uma peça.
o item leva 22 hora para ser produzido, a empresa trabalha das 7:00 as 17:00 de seg a sexta.
como faço o calculo :
com Hora Inicial + 22 horas para produzir - (hora noturna 17:01 as 6:59 e fins de semana) = dia e hora do termino.
desde já agradeço
exemplo:
Static t_inicio As DateTime
Static t_fim As DateTime
Dim t_diferenca As TimeSpan
t_inicio = LBL_DATA_CUPOM.Text & [Ô] [Ô] & LBL_HORA_CUPOM.Text
t_fim = Now
t_diferenca = t_fim.Subtract(t_inicio)
LBL_TIME.Text = t_diferenca.TotalMinutes.ToString([Ô]0.00[Ô])
LBL_TIME.Text = FormatNumber(LBL_TIME.Text, 2)
Static t_inicio As DateTime
Static t_fim As DateTime
Dim t_diferenca As TimeSpan
t_inicio = LBL_DATA_CUPOM.Text & [Ô] [Ô] & LBL_HORA_CUPOM.Text
t_fim = Now
t_diferenca = t_fim.Subtract(t_inicio)
LBL_TIME.Text = t_diferenca.TotalMinutes.ToString([Ô]0.00[Ô])
LBL_TIME.Text = FormatNumber(LBL_TIME.Text, 2)
Eu uso isso aqui amigo
DIF = DateDiff([Ô]n[Ô], data_hora_final, data_hora_inicio)
DIF = DateDiff([Ô]n[Ô], data_hora_final, data_hora_inicio)
oi amigos, obrigado pelas dicas.
mas há um detalhe o problema não é fazer há diferença de Horafim e horaIni
é calcular e pular o intervalo ( apenas horas uteis)
21/08/2014 14:00:00 + 22 horas ( - perÃodo noturno) =???
mas há um detalhe o problema não é fazer há diferença de Horafim e horaIni
é calcular e pular o intervalo ( apenas horas uteis)
21/08/2014 14:00:00 + 22 horas ( - perÃodo noturno) =???
Ta ,
Deixa so ver se eu peguei a ideia ,
Hora inicio , pausa [Ô]tempo que nao foi trabalhado[Ô] , hora final ?
Não seria melhor criar uma tabela com etapas ?
1 etapa , de x a y
z1= datedif(x , y)
2 atapa , de x1 a y1
z2=datedif(x1 , y1)
total de tempo = z1 + z2
Deixa so ver se eu peguei a ideia ,
Hora inicio , pausa [Ô]tempo que nao foi trabalhado[Ô] , hora final ?
Não seria melhor criar uma tabela com etapas ?
1 etapa , de x a y
z1= datedif(x , y)
2 atapa , de x1 a y1
z2=datedif(x1 , y1)
total de tempo = z1 + z2
então BADJECO, a ideia é essa mesma...
iniciar, pausar.. continuar, pausar de novo ( se excede para o 3º dia) e assim consecutivamente.
ainda não tenho ideia de como fazer. usar tabela com etapas? não sei.. não há um etapa.. não teria oque colocar nessa tabela.
eu só tenho 3 dados, Hora inicial, tempo de produção e intervalos ( das 17:01 as 6:59 e fins de semana).
iniciar, pausar.. continuar, pausar de novo ( se excede para o 3º dia) e assim consecutivamente.
ainda não tenho ideia de como fazer. usar tabela com etapas? não sei.. não há um etapa.. não teria oque colocar nessa tabela.
eu só tenho 3 dados, Hora inicial, tempo de produção e intervalos ( das 17:01 as 6:59 e fins de semana).
Tente assim:
OBS: Não testei todas as possibilidades
Dim dataEHoraInicial As DateTime = Date.Now [ô]Retire o Date.Now e coloque a data e hora que começa a produção da peça.
Dim dataEHoraFinal As DateTime
dataEHoraFinal = dataEHoraInicial.AddDays(3) - TimeSpan.Parse([Ô]22:00:00[Ô])
If dataEHoraFinal.Hour >= 17 Then
dataEHoraFinal = dataEHoraFinal.AddDays(1)
dataEHoraFinal = dataEHoraFinal.Subtract(TimeSpan.Parse([Ô]10:00:00[Ô]))
End If
If dataEHoraFinal.DayOfWeek = DayOfWeek.Saturday Or dataEHoraFinal.DayOfWeek = DayOfWeek.Sunday Or (dataEHoraFinal.DayOfWeek < dataEHoraInicial.DayOfWeek) Then
dataEHoraFinal = dataEHoraFinal.AddDays(2)
End If
MsgBox(dataEHoraFinal)
OBS: Não testei todas as possibilidades
MAXCIM, ficou com alguma dúvida em relação ao código que lhe passei?
Se no lugar do Date.Now você especificar a data e hora inicial da produção da peça, como por exemplo, Dim dataEHoraInicial As DateTime = CDate([Ô]17/8/2015 07:00:00[Ô]), o término da peça será dia 19/08/2015 09:00:00. Seria isso mesmo?
Citação:Dim dataEHoraInicial As DateTime = Date.Now
Se no lugar do Date.Now você especificar a data e hora inicial da produção da peça, como por exemplo, Dim dataEHoraInicial As DateTime = CDate([Ô]17/8/2015 07:00:00[Ô]), o término da peça será dia 19/08/2015 09:00:00. Seria isso mesmo?
Olá, Jaba, Obrigado pela ajuda
não entendi bem a logica,
na linha dataEHoraFinal = dataEHoraInicial.AddDays(3) - TimeSpan.Parse([Ô]22:00:00[Ô]) como chegou ao addDays(3)?
meu cliente terá produtos com prazos diferentes... uns podem levar 3,5,10,20,30 ou mais horas de produção.
não entendi bem a logica,
na linha dataEHoraFinal = dataEHoraInicial.AddDays(3) - TimeSpan.Parse([Ô]22:00:00[Ô]) como chegou ao addDays(3)?
meu cliente terá produtos com prazos diferentes... uns podem levar 3,5,10,20,30 ou mais horas de produção.
Eu fiz esse código baseando nas suas informações. Como você tinha dito que os produtos levam 22 horas para serem produzidos e que o horário de funcionamento é de 07:00 as 17:00 (10 horas de trabalho), então um produto sempre levará, no mÃnimo, 3 dias para ser produzido, por isso esse código de AddDays(3). Depois eu retirei os horários noturnos, como você também tinha mencionado e tratei a parte referente aos finais de semana.
Apesar de você não ter entendido a lógica, era isso que você realmente precisava?
Apesar de você não ter entendido a lógica, era isso que você realmente precisava?
Jaba,
to pensando em fazer um LOOP pego a hora inicial e vou somando +1 até o nro de horas de produção,
se passar das 17:00 somo o intervalo 17:00 as 7:00 e de for sábado mais +48 e se for domingo +24.
com hora cheia eu até consegui fazer... mas com hora e minutos não cheguei a uma conclusão.
to pensando em fazer um LOOP pego a hora inicial e vou somando +1 até o nro de horas de produção,
se passar das 17:00 somo o intervalo 17:00 as 7:00 e de for sábado mais +48 e se for domingo +24.
com hora cheia eu até consegui fazer... mas com hora e minutos não cheguei a uma conclusão.
Tópico encerrado , respostas não são mais permitidas