Pular para o conteúdo principal

Classe para tratar de diferenças entre datas



/**
 * Classe com metodos que tratam de diferencas entre datas
 * @author Nelson Costa - nelson.nit@gmail.com
 *
 */
class FuncaoData {
/**
* Retorna o mktime de uma data no formato YYYYMMDDHHIISS
* @param string $dt
* @return integer Qt de segundos entre 01/01/1970 00:00:00 e a data fornecida
*/
public static function qtSegundoDtHr($dt_hr) {
return mktime(substr($dt_hr,8,2), substr($dt_hr,10,2), substr($dt_hr,12,2), substr($dt_hr,4,2), substr($dt_hr,6,2), substr($dt_hr,0,4));
}

/**
* Calcula a diferenca em segundos entre duas datas no formato YYYYMMDDHHIISS
* @param string $dt_ini
* @param string $dt_fim
* @return integer Qt. de segundos
*/
public static function difSegundoEntreDtHr($dt_ini, $dt_fim) {
return self::qtSegundoDtHr($dt_ini) - self::qtSegundoDtHr($dt_fim);
}

/**
* Soma em uma data YYYYMMDDHHIISS uma certa quantidade de segundos
* @param string $dt_hr YYYYMMDDHHIISS
* @param integer $qt_seg Qt. de segundos a ser somado
* @return string YYYYMMDDHHIISS
*/
public static function somarSegundoEmDtHr($dt_hr, $qt_seg, $formato = 'YmdHis') {
return date($formato, self::qtSegundoDtHr($dt_hr) + $qt_seg);
}

/**
* Retorna um array no formato array(dia, hora, min, seg)
* @param integer $qt_segundo
* @return array array(dia, hora, min, seg)
*/
public static function dtDiaHrMinSeg($qt_segundo) {
$fullDia    = floor($qt_segundo/86400);
$fullHora   = floor(($qt_segundo - ($fullDia*86400))/3600);
$fullMin = floor(($qt_segundo-($fullDia*86400)-($fullHora*3600))/60);
$fullSeg = $qt_segundo - $fullDia*86400 - $fullHora*3600 - $fullMin*60;
return array($fullDia, $fullHora, $fullMin, $fullSeg);
}
}

Comentários

Postagens mais visitadas deste blog

Lista de órgãos emissores de RG

Para quem quiser normalizar os órgãos emissores de RG, aí vai uma lista retirada do site da FGV: SSP - Secretaria de Segurança Pública PM - Polícia Militar PC - Policia Civil CNT - Carteira Nacional de Habilitação DIC - Diretoria de Identificação Civil CTPS - Carteira de Trabaho e Previdência Social FGTS - Fundo de Garantia do Tempo de Serviço IFP - Instituto Félix Pacheco IPF - Instituto Pereira Faustino IML - Instituto Médico-Legal MTE - Ministério do Trabalho e Emprego MMA - Ministério da Marinha MAE - Ministério da Aeronáutica MEX - Ministério do Exército POF - Polícia Federal POM - Polícia Militar SES - Carteira de Estrangeiro SJS - Secretaria da Justiça e Segurança SJTS - Secretaria da Justiça do Trabalho e Segurança ZZZ - Outros (inclusive exterior)

Comparar dois números float em PHP

Para não passar raiva comparando dois números float com PHP nunca faça algo do tipo abaixo: $a = 0.1; $b = 0.2; if ($a + $b == 0.3) {     echo 'Igual'; } else {     echo 'Diferentes'; } Se fizer isso, vai ver que dá problema devido ao modo como o PHP guarda os valores float. Para resolver isso criei a função abaixo para comparar dois valores do tipo float. /** * Esta função recebe dois números como parâmetro.   * Se os números forem iguais, ou seja, se a diferença  * entre eles for menor que a margem de erro aceitável,   * a função retorna 0, caso contrário retorna -1 se o  * primeiro número for menor, * ou então 1 caso o segundo  * seja o menor   * @param float $a   * @param float $b   * @return 0 (igual), -1($num1 menor), 1($num2 menor)   */ function compara_float( $num1 , $num2 , $precisao = 5 ) {   $desprezar = pow ( 0.1 , $precisao );   $diff = abs ( $num1 - $...