chodos 0 Denunciar post Postado Agosto 11, 2008 Olá pessoal, não tenho muita expriência com PHP então tava precisando da ajuda de vcs... Preciso calcular o tempo decorrido entre duas datas, sendo que só pode ser considerado o tempo dentro do horário comercial, ou seja tem que ser descontado o periodo entre 18:00h e 08:00h e os fins de semana. Fiz a seguinte função: - onde $ab é a data inicial e a data final o momento em que estamos function calcTemp ($ab) { $agora = time(); for ($a=$ab;$a<$agora;$a=$a+300){ $dia_da_semana = date("w", $a); $hora = date("H", $a); if (($dia_da_semana != 0) && ($dia_da_semana != 6)){ if ((($hora >= 8) && ($hora < 12)) || (($hora > 13) && ($hora < 18))){ $temp=$temp+300; } } } return $temp; } Esse código está funcionando, mas não está nem um pouco funcional :wacko: ... para poucas datas e periodos curtos ele funciona bem, mas vou trabalhar com cerca de 20 intervalos ou mais e é ai que a coisa não funciona... Alguém teria uma sugestão??? O que e como eu poderia mudar??? Obrigado!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Agosto 12, 2008 <?php class Date_Hour{ function IncDec( $src1 = '', $src2 = '', $output = '' ){ $i['Y'] = 'years'; $i['m'] = 'months'; $i['d'] = 'days'; $i['H'] = 'hours'; $i['i'] = 'minutes'; $i['s'] = 'seconds'; if( !is_array( $src1 ) or $src1 == '' ){ $src1 = array( 'Y' => date('Y') ,'m' => date('m') ,'d' => date('d') ,'H' => date('H') ,'i' => date('i') ,'s' => date('s') ); } if( !is_array( $src2 ) or $src2 == '' ){ $src2 = array( 'Y' => 0 ,'m' => 0 ,'d' => 0 ,'H' => 0 ,'i' => 0 ,'s' => 0 ); } foreach( $src2 as $k => $v ) { $factor[] = '+' . $v . ' ' . $i[$k]; } $output == '' ? $output = 'Y-m-d H:i:s' : ''; $date1 = mktime( $src1['H'], $src1['i'], $src1['s'], $src1['m'], $src1['d'], $src1['Y'] ); $rs = strtotime( implode( ' ', $factor ), $date1 ); return date( $output, $rs ); /** usage sample $src1 = array( 'Y' => date('Y') ,'m' => date('m') ,'d' => date('d') ,'H' => date('H') ,'i' => date('i') ,'s' => date('s') ); // for decrease, put negative values $src2 = array( 'Y' => 0 // years ,'m' => 0 // minutes ,'d' => 0 // days ,'H' => 2 // hours ,'i' => 0 // minutes ,'s' => 0 // seconds ); print_r( Date_Hour::IncDec( $src1, $src2, 'H' ) ); // output hour only print_r( Date_Hour::IncDec( $src1, $src2, 'H:i' ) ); // hour and minute only print_r( Date_Hour::IncDec( $src1, $src2, 'Y-m-d' ) ); // Year, Month and Day ... references: http://php.net/mktime http://php.net/implode http://php.net/date http://php.net/strtotime http://php.net/is_array */ } } ?> Compartilhar este post Link para o post Compartilhar em outros sites