mrbomber 0 Denunciar post Postado Junho 17, 2015 Procurei aqui no forum e em outros lugares, e não achei nada que pudesse me ajudar. Preciso calcular o adicional noturno, que é computado sempre das 22:00 as 05:00 da manha. a pergunta é... como fazer? Tenho apenas os horarios como: 2015-02-10 23:55:00 | 2015-02-11 04:12:00 Alguém manja como fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites
Lord Enigm@ 34 Denunciar post Postado Junho 17, 2015 Olá! Ué, não seria apenas calcular o adicional noturno de acordo com as horas trabalhadas e o percentual da categoria ou o que foi decidido no último dissídio? Consulte o sindicato da categoria para saber quantos porcentos serão acrescidos sobre as horas trabalhadas. Simples assim. Simples questão administrativa. ;) [ ]'s Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 17, 2015 Olá! Ué, não seria apenas calcular o adicional noturno de acordo com as horas trabalhadas e o percentual da categoria ou o que foi decidido no último dissídio? Consulte o sindicato da categoria para saber quantos porcentos serão acrescidos sobre as horas trabalhadas. Simples assim. Simples questão administrativa. ;) [ ]'s o problema é chegar em uma formula, em php, que me diga qto tempo foi de tempo em horas e minutos, de adicional... São várias linhas assim, e não são horas cheias... sempre tem um minuto "quebrado"... Compartilhar este post Link para o post Compartilhar em outros sites
Lord Enigm@ 34 Denunciar post Postado Junho 17, 2015 Olá. o problema é chegar em uma formula, em php, que me diga qto tempo foi de tempo em horas e minutos, de adicional... São várias linhas assim, e não são horas cheias... sempre tem um minuto "quebrado"... Essa questão não se aplica em apenas, e, somente fórmula em PHP, e sim à qualquer linguagem de programação que você se propôr a codar. Faltou algum estudo no meio do caminho. Recomendo que você deve estudar calculos de horários. Tipo: http://calculoexato.com.br/parprima.aspx?codMenu=TrabHorasExtras Use a força! Caso ainda não consiga, posta aí que os demais colegas irão te ajudar. Por acaso você bolou as aulas de administração e contabilidade? Incluindo RH? ;) [ ]'s Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 18, 2015 Olá. Essa questão não se aplica em apenas, e, somente fórmula em PHP, e sim à qualquer linguagem de programação que você se propôr a codar. Faltou algum estudo no meio do caminho. Recomendo que você deve estudar calculos de horários. Tipo: http://calculoexato.com.br/parprima.aspx?codMenu=TrabHorasExtras Use a força! Caso ainda não consiga, posta aí que os demais colegas irão te ajudar. Por acaso você bolou as aulas de administração e contabilidade? Incluindo RH? ;) [ ]'s @Lord Enigm@, eu consido com um diff verificar o tempo de horario... estou em um forum de php e nao de administracao.... A minha dúvida é: como calcular... como extrair... coloquei como exemplo la a linha da minha query: 2015-02-10 23:55:00 | 2015-02-11 04:12:00 mas e se a linha for: 2015-02-10 02:55:00 | 2015-02-11 04:12:00 Entendeu agora a minha dúvida? Compartilhar este post Link para o post Compartilhar em outros sites
Lord Enigm@ 34 Denunciar post Postado Junho 18, 2015 Olá. A minha dúvida é: como calcular... como extrair... Entendeu agora a minha dúvida? Acho que entendi agora. sabes como calcular horários? [ ]'s Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 18, 2015 Olá. Acho que entendi agora. sabes como calcular horários? [ ]'s Sim sei... consigo calcular intervalos... mas preciso extrair sempre que cair no horario entre 22:00 e 05 da manha... Compartilhar este post Link para o post Compartilhar em outros sites
Lord Enigm@ 34 Denunciar post Postado Junho 18, 2015 Sim sei... consigo calcular intervalos... mas preciso extrair sempre que cair no horario entre 22:00 e 05 da manha... Intervalos sempre são fixos (ou não necessariamente), assim como cair no horário entre 22:00 e 05 da manhã. Quanto ao fórum de PHP e não de Admin, você deveria ampliar seus horizontes e seus conhecimentos. Afinal, saber sobre Admin e Contabilidade nunca é demais para nossa sabedoria. Aguarde aí que alguém virá lhe ajudar a codar em PHP. ;) [ ]'s Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 18, 2015 Intervalos sempre são fixos (ou não necessariamente), assim como cair no horário entre 22:00 e 05 da manhã. Quanto ao fórum de PHP e não de Admin, você deveria ampliar seus horizontes e seus conhecimentos. Afinal, saber sobre Admin e Contabilidade nunca é demais para nossa sabedoria. Aguarde aí que alguém virá lhe ajudar a codar em PHP. ;) [ ]'s O problema é essse, @Lord Enigm@. os intervalos nunca serão fixos. São escalas de motoristas...e eles comecam a trabalhar em qq horario, e trabalham no intervalo entre as 22 as 05, antes, depois disso... nao tem um padrao...s e tivesse tava na mao... passou das 22 é adicional... Meu problema é identificar, em php, se é adicional notirno ou nao. Se fosse padrao a carga horaria, finalizou a jornada, é adicional... só que nao é assim... preciso identificar se está no adicional ou nao... Até achei esse post ai embaixo que trata como se a jornada fosse fixa.. http://forum.imasters.com.br/topic/405467-trabalhar-com-adicional-noturno-hora-extra/ Entenda: não preciso calcular valor da hora... apenas dizer quanto tempo o cara entrou no adicional! Compartilhar este post Link para o post Compartilhar em outros sites
Lord Enigm@ 34 Denunciar post Postado Junho 18, 2015 (...) São escalas de motoristas...e eles comecam a trabalhar em qq horario, e trabalham no intervalo entre as 22 as 05, antes, depois disso... nao tem um padrao...s e tivesse tava na mao... Meu problema é identificar, em php, se é adicional notirno ou nao. (...) Como eu disse anteriormente ... consulte o dissídio ou sindicato da categoria. O algorítimo de horário para adicional será o mesmo qualquer programação que usar; até BASIC ou ASSEMBLER. O seu problema não está no PHP, e sim saber qdo será adicional noturno. Simples assim. [ ]'s Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Junho 18, 2015 Entenda: não preciso calcular valor da hora... apenas dizer quanto tempo o cara entrou no adicional! @Lord Enigm@, eu consido com um diff verificar o tempo de horario... estou em um forum de php e nao de administracao.... A minha dúvida é: como calcular... como extrair... coloquei como exemplo la a linha da minha query: 2015-02-10 23:55:00 | 2015-02-11 04:12:00 mas e se a linha for: 2015-02-10 02:55:00 | 2015-02-11 04:12:00 Entendeu agora a minha dúvida? Se eu entendi, e como você ja tinha pesquisado por datetime e a função diff $start_time = "2015-02-10 02:55:00"; $end_time = "2015-02-11 04:12:00"; $start = new DateTime($start_time); $interval = $start->diff(new DateTime($end_time)); $result = $interval->format("%d") * 24; $result = $result + $interval->format("%H"); echo $result . ' Horas ' .$interval->format("%i minutos e %s segundos"); output 25 Horas 17 minutos e 0 segundos Do mais só estudar um pouco a classe datetime Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 18, 2015 Se eu entendi, e como você ja tinha pesquisado por datetime e a função diff $start_time = "2015-02-10 02:55:00"; $end_time = "2015-02-11 04:12:00"; $start = new DateTime($start_time); $interval = $start->diff(new DateTime($end_time)); $result = $interval->format("%d") * 24; $result = $result + $interval->format("%H"); echo $result . ' Horas ' .$interval->format("%i minutos e %s segundos"); output 25 Horas 17 minutos e 0 segundos Do mais só estudar um pouco a classe datetime Isso @Williams Duarte... Mas dessa forma ele me dá o tempo do lapso todo: 25 hs Preciso saber so o q foi dentro das 22 as 5 da manha mesmo se eu colocar uma condicao de maior que 22 e menor que 5, ele nao me retorna a saida correta. por ex: $start_time = "2015-02-10 02:55:00"; $end_time = "2015-02-11 04:12:00"; ele vai sempre achar que na horario 2015-02-10 10:55:00 é menor que 22hs daquele dia e menor que 5 da manha do dia seguinte. Já pensei em encher de if pra dar condicional de hora em hora até as 5 da manha, mas fica muito porco. A minha pergunta é se tem como fazer de outra forma com código mais enxuto... Compartilhar este post Link para o post Compartilhar em outros sites
Tayso 1 Denunciar post Postado Junho 18, 2015 cara eu acho que seria algo assim, eu uso para uma situação semelhante. SELECT * FROM como_pagar WHERE caixa='1' AND forma_pagamento='2' AND ( data_cad = '2015-04-17' AND hora_cad BETWEEN '12:00:00' AND '23:59:59' OR data_cad = '2015-04-18' AND hora_cad BETWEEN '00:00:00' AND '07:59:59' ) Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Junho 18, 2015 Não existe uma solução simples para o seu caso, pois você tem várias questões que "são complexas" para a máquina: 1 - Data inicial/final variável; 2 - Troca de dias (início em um e termina em outro); 3 - Valor específico dentro de um contexto maior... O que eu varia no seu caso, pegaria a data/hora inicial e data/hora final e "arrendondaria", por exeplo: Início: 17/06/2015 15:45:00 -> 17/06/2015 15:00:00 Início: 18/06/2015 02:08:00 -> 18/06/2015 02:00:00 A partir disto montaria um laço, começaria com a data inicial e a cada volta incrementaria em uma hora, ele pararia na data final. Dentro do laço teria um if/else onde eu controlaria a questão da hora noturna. Pronto, ai bastaria calcular a diferença que foi arredondada na data/hora inicial e final e acrescentar ao montante da hora diurna e noturna que já foi calculada dentro do laço. De fato esta não é a solução mais bela do mundo, contudo a questão é "complexa" mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 19, 2015 Não existe uma solução simples para o seu caso, pois você tem várias questões que "são complexas" para a máquina: 1 - Data inicial/final variável; 2 - Troca de dias (início em um e termina em outro); 3 - Valor específico dentro de um contexto maior... O que eu varia no seu caso, pegaria a data/hora inicial e data/hora final e "arrendondaria", por exeplo: Início: 17/06/2015 15:45:00 -> 17/06/2015 15:00:00 Início: 18/06/2015 02:08:00 -> 18/06/2015 02:00:00 A partir disto montaria um laço, começaria com a data inicial e a cada volta incrementaria em uma hora, ele pararia na data final. Dentro do laço teria um if/else onde eu controlaria a questão da hora noturna. Pronto, ai bastaria calcular a diferença que foi arredondada na data/hora inicial e final e acrescentar ao montante da hora diurna e noturna que já foi calculada dentro do laço. De fato esta não é a solução mais bela do mundo, contudo a questão é "complexa" mesmo. Então @ESerra... é bem complexo mesmo... consegui fazer na base da gambi... vou deixar aqui pra ver se ajuda alguém no futuro... Sendo que serve pra mim... mas da pra adaptar Mas ainda imagino que possa ter alguma solução mais "enxuta" rsrsrsrsr <? //AQUI ALTERA OS VALORES $ini_direcao = "2015-02-12 03:10:00"; $fim_direcao = "2015-02-12 08:00:00"; $objDate = DateTime::createFromFormat('Y-m-d H:i:s', $ini_direcao); $objDate2 = DateTime::createFromFormat('Y-m-d H:i:s', $fim_direcao); $dia1 = $objDate->format('Y-m-d'); $hora1 = $objDate->format('H:i:s'); $dia2 = $objDate2->format('Y-m-d'); $hora2 = $objDate2->format('H:i:s'); $var_1 = $dia1." 22:00:00"; $var_2 = $dia1." 23:59:00"; $var_3 = $dia1." 00:00:00"; $var_4 = $dia1." 05:00:00"; $var_5 = $dia2." 22:00:00"; $var_6 = $dia2." 23:59:00"; $var_7 = $dia2." 00:00:00"; $var_8 = $dia2." 05:00:00"; // defini iniciais if ($ini_direcao < $var_1): $hora_ini_adn = $var_1; endif; if ($ini_direcao > $var_1): $hora_ini_adn = $ini_direcao; endif; if ($ini_direcao > $var_3 && $ini_direcao < $var_4): $hora_ini_adn = $ini_direcao; endif; //defini finais if ($fim_direcao > $var_5 || $fim_direcao < $var_8): $hora_end_adn = $fim_direcao; endif; if ($fim_direcao > $var_8): $hora_end_adn = $var_8; endif; if ($fim_direcao > $var_8 && $fim_direcao > $var_5): $hora_end_adn = $fim_direcao; endif; ##SAIDA## echo "<p>"; echo $hora_ini_adn; echo "<br>"; echo $hora_end_adn; echo "</p>"; $x = strtotime($hora_ini_adn); $y = strtotime($hora_end_adn); $nHoras_ad1 = ($y - $x) / 3600; $nMinutos_ad1 = (($y - $x) % 3600) / 60; $total_adn = sprintf('%02d:%02d', $nHoras_ad1 , $nMinutos_ad1); if ($total_adn <= 0): $total_adn = "00:00"; endif; echo $total_adn; ?> Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Junho 19, 2015 Uma coisa que eu esqueci de falar antes e que é importante, a hora noturna tem apenas 52 minutos e 30 segundos, você tem que levar isto em consideração, pois isto reflete em outras questões trabalhistas também. Compartilhar este post Link para o post Compartilhar em outros sites