Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Megadeth

Calculando dias uteis e não uteis de um periodo

Recommended Posts

Estou precisando de uma função que possa calcular o numero de dias uteis e não uteis de um determinado periodo.Se alquem poder me ajudar desde já fico agradecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode tentar adaptar o seguinte código que eu extrai do phpbrasil

 

$mes_mk = htmlentities($_GET['mes']);$ano_mk = htmlentities($_GET['ano']);$transforma_mes = array ("1" => "Janeiro","2" => "Fevereiro","3" => "Março","4" => "Abril","5" => "Maio","6" => "Junho","7" => "Julho","8" => "Agosto","9" => "Setembro","10" => "Outubro","11" => "Novembro","12" => "Dezembro");for ($x=0;$x<date("t", time());$x++) {	if (strtolower(date("l", mktime(0,0,0,$mes_mk,$x,$ano_mk))) != 'saturday' &&	strtolower(date("l", mktime(0,0,0,$mes_mk,$x,$ano_mk))) != 'sunday')		$all++;}echo "<font face=verdana size=1><b>	  Total de </b>".$all." <b>	  dias úteis no mês	  de ".$transforma_mes[$mes_mk]."</b></font>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, eu tenho uma classe que eu desenvolvi que faz diversos calculos referêntes a data/hora para gerenciamento de cobranças, mas não fornecerei o código. O que posso fazer é explicar como ela calcula os dias úteis, e tu tenta fazer ai, afinal nada nesse mundo eh de graça né?$DataInicial = '01/12/2006';$DataFinal = '18/12/2006';Converta as datas para um formato onde o php entenda (eu geralmente converto para timestamp);Calcule quantos dias tem entre as datas (procure no fórum que você acha vários posts falando sobre);Armazene tudo em um array mais ou menos nesse formato:$Dias = Array ( '1'=> 'Sexta-feira', '2'=> 'Sábado', '3'=> 'Domingo',...... '18'=> 'Segunda-feira');Aí é só você mandar remover da array os 'sábados e domingos'.Você também pode montar um 'banco de dados' de feriádos bancários e verificar se existem datas dentro da array, existindo, removendo-as.Após é só contar quantos registros sobraram na array...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, eu tenho uma classe que eu desenvolvi que faz diversos calculos referêntes a data/hora para gerenciamento de cobranças, mas não fornecerei o código. O que posso fazer é explicar como ela calcula os dias úteis, e tu tenta fazer ai, afinal nada nesse mundo eh de graça né?

Já ouviu falar em projetos open-source? O próprio PHP é um... http://forum.imasters.com.br/public/style_emoticons/default/natal_dry.gif Tinha criado essa função há alguns dias:
function dias_uteis($diaIni,$diaFim) {		 $diaUtil = array();		 $diaInutil = array();		 while ($diaIni<=$diaFim) {				if (($dS=date("w",$diaIni))=="0" || $dS=="6") $diaInutil[] = $diaIni;				else $diaUtil[] = $diaIni;				$diaIni += 86400;		 }		 return array("u" => $diaUtil,"i" => $diaInutil);}
...que retorna um array, no indice "u" estão os dias úteis e em "i" os finais de semana, tudo em timestamp, se quiser visualizar os dias é só fazer: print $s['u'][2]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alisson sua função é muito boa mais ela só calcula dias de um mes,eu preciso de uma que calcule os dias uteis e não uteis de um periodo,mais mesmo assim. Obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para ficar melhor, gostaria apenas que me ajudasema criar um loop que vá de uma data inicial até umadata final, o resto deixa comigo. OK!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo:

 

$data_inicial = strtotime("2006-12-01");
$data_final = strtotime("2007-06-01");

while ($data_inicial <= $data_final) {
// processamento...
//
$data_inicial += 86400;
}

 

Como a $data_inicial é um timestamp, você pode utilizá-la juntamente com a função date. Pra pegar o dia da semana, basta fazer date("w", $data_inicial).

 

Aí talvez você tenha que considerar os feriados, também... os fixos, como 7 de setembro ou 15 de novembro, são fáceis... já o variáveis, como Carnaval ou Páscoa, são um pouco mais chatos... mas não é difícil de encontrar algorítimos no Google que ensinem a calcular o dia em que o Carnaval cairá num determinado ano, por exemplo.

 

[]'s!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Illidan, era realmente isso que eu estava precisando, muito Obrigado.Abraços ! Inté ! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigão, não querendo ser chato, mas qual a diferença entre o que eu postei e o que o Illidan postou? A minha calcula dentro de um período independente se tem 1 mês ou 20...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigão, não querendo ser chato, mas qual a diferença entre o que eu postei e o que o Illidan postou? A minha calcula dentro de um período independente se tem 1 mês ou 20...

Cara o negocio é o seguinte, seu codigo não funfou aqui,talvez por que eu não entendi muito esses seus arrays,mais usei o do Illidan, que na verdade criei uma funçãoque acabou ficando igual a sua. Desculpe e muito obrigado!Valew a todos, ABRAÇOS!!!!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.