function ano_bissexto($ano) { return ($ano % 4 == 0) and (($ano % 100 != 0) or ($ano % 400 == 0)); } function data_codifica($dia,$mes,$ano) { $a = $ano-1; $anos_bissextos = floor($a/4); $dias = ($a*365)+$anos_bissextos; $mab = array(31,29,31,30,31,30,31,31,30,31,30,31); $msb = array(31,28,31,30,31,30,31,31,30,31,30,31); $meses = $msb; if (ano_bissexto($ano)) $meses = $mab; for ($m==1;$m<$mes;$m++) $dias = $dias+$meses[$m-1]; $dias = $dias+$dia; return $dias; } function data_decodifica($data) { $base = (365*4)+1; $arr = array(1,1,1); $anos_bissextos = floor($data/$base); $dias_excedentes = floor($data%$base); $ano = ($anos_bissextos*4)+floor($dias_excedentes/365)+1; $dias = floor($dias_excedentes%365); $mab = array(31,29,31,30,31,30,31,31,30,31,30,31); $msb = array(31,28,31,30,31,30,31,31,30,31,30,31); $meses = $msb; if (ano_bissexto($ano)) $meses = $mab; $continua = true; $m = 0; while (true) { if ($dias < $meses[$m]) break; $dias = $dias-$meses[$m]; $m++; } $arr[0] = $dias; $arr[1] = $m+1; $arr[2] = $ano; return $arr; }