CALCULO DE HORAS

MAXCIM 21/08/2015 10:52:37
#450308
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
NILSONTRES 21/08/2015 11:07:39
#450310
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)
BADJECO 21/08/2015 11:25:04
#450312
Eu uso isso aqui amigo

DIF = DateDiff([Ô]n[Ô], data_hora_final, data_hora_inicio)
MAXCIM 21/08/2015 11:29:39
#450313
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) =???
BADJECO 21/08/2015 11:42:19
#450315
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
MAXCIM 21/08/2015 12:24:30
#450319
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).
JABA 21/08/2015 12:54:22
#450324
Resposta escolhida
Tente assim:

        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
JABA 22/08/2015 01:59:26
#450348
MAXCIM, ficou com alguma dúvida em relação ao código que lhe passei?

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?
MAXCIM 22/08/2015 10:14:15
#450351
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.

JABA 22/08/2015 10:27:29
#450354
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?
MAXCIM 23/08/2015 15:57:15
#450370
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.
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas