Preciso de colocar algumas datas na função time(), as vezes é uma data que ainda virá, ou uma data passada!
Não achei nenhuma função (não procurei muito) que faça tal... então decidi criar uma, porque não parece muito complicado...
Dai criei 2 funções, a primeira para ver quantos ano bissextos teve desde que foi começado a contagem em segundos da função, para eu poder adicionar esses dias depois na data... então vamos lá, esta é a função do ano bissexto:
function ano_bissexto($mes, $ano)
{
$a = $ano - 1968; //ano atual menos o último ano bissexto antes de começar a função time, para quando der um ano, quando eu dividir por 4 (qtdade de anos a cada bissexto) dar os anos corretamente.
$a = $a / 4;
$array = explode('.', $a); //dividindo o resultado da divisão para pegar só o número inteiro
$qtde_bi = $array[0];
if($mes <= 02 ) //vendo se o mês é menor ou iqual fevereiro, porque em fevereiro ainda não teve o dia do bissexto, e se for o dia 29, na outra função vai somar o valor deste dia já
{
$ano_bi = $qtde_bi - 1;
} else
{
$ano_bi = $qtde_bi;
}
return $ano_bi;
}Agora a função que vai gerar a data na função time() do php:
function gerar_data($dia,$mes,$ano)
{
//gerando o dia em segundos
$d = $dia * 86400;
//gerando o mês em segundos
switch ($mes)
{
case 01:
$m = 0;
Break;
case 02:
$m = 2678400;
Break;
case 03:
$m = 5097600;
Break;
case 04:
$m = 7776000;
Break;
case 05:
$m = 10368000;
Break;
case 06:
$m = 13046400;
Break;
case 07:
$m = 15638400;
Break;
case 08:
$m = 18316800;
Break;
case 09:
$m = 20995200;
Break;
case 10:
$m = 23587200;
Break;
case 11:
$m = 26265600;
Break;
case 12:
$m = 28857600;
Break;
}
//gerando o ano em segundos
$a = $ano - 1970;
$a = $a * 31536000;
//gerando os dias de anos bissextos em segundos
$dias_bi = ano_bissexto($mes, $ano);
$dias_bi = $dias_bi * 86400;
//somando todos os segundos agora
$time_gerado = $d + $m + $a + $dias_bi;
return $time_gerado;
}só que o problema é que em toda data, está sendo gerado 21hr à mais...
se eu coloco
$dia = '10';
$mes = '10';
$ano = '2010';
Ele me gera a data 10/10/2010 às 21:00 (Em time, claro).
Como é sempre 21hr, seria só contar o valor de 21hr em segundos e subtrair e boa, mato o problema, só que seria meio que uma gambiarra, queria saber onde eu errei para poder aprender também, já olhei o código umas 5 vezes, refiz as contas.... =x
Obrigado.
EDIT: Será que tem algo a ver com o GMT?
no código está definido:
date_default_timezone_set('America/Bahia'); //definindo o fuso horário










