Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com data


h-abreu

Pergunta

Olá, ao converter uma db, o programa me informaum número tem a pessoa naquele dia; preciso obter a data de nascimento a partir desse número. O programa me informa também o mês; Como descobrir a data com php?

Exemplo: Ele me informou o número 45,138 e mês 07; Abrindo o programa base sei que a data é 29/07/1924 (hoje é 21/01/2009);

Se hovesse poucos registros, abriria o programa e copiava; só que é mais de 10 mil registros;

Alguém pode me ajudar?

(Obs.: utilizo para converter os dados exportados pelo TOPSCAN e php para inseri-los no novo bd)

Editado por h-abreu
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

É um número que indica Quantidade de dias a partir de 28/12/1800

Eles falaram:

> A Clarion standard date is the number of days since 28th December 1800.

> The range of dates is from 1 Jan 1801 (value of 4) to 31 December 9999

> (value of 2,994,626)

>

O TopSpeed Database mostra somente isto:

abdc4920e0aba8e6f346187d2b26dbe9.png

Editado por h-abreu
Link para o comentário
Compartilhar em outros sites

  • 0

Em um fórum americano descobri:

Fortunately, that's easy to do. Just create a formula in another column,

subtracting 36161 from the value and formatting it as a date. Clarion

standard dates and the Excel DATE() function both have an arbitrary "Day

1" - for Excel, this is 1/1/1900, while Clarion's Day 1 is 12/28/1800

(although the first usable date is Day 4, or 1/1/1801). The number 36161

is the difference in days between these two dates.

Mas como eu faço isso com PHP?

Obrigado pela atenção.

Link para o comentário
Compartilhar em outros sites

  • 0

Com PHP nativamente você não vai conseguir fazer, pois o range válido de datas é a partir de 13/12/1901, para esse cálculo é preciso pegar a data inicial que é 01/01/1900...

Montei algo rápido aqui, só pra exemplificar:

$valor1 = 45138;
$valor2 = 36161;
$valor_final = $valor1-$valor2;

$ano = explode('.',$valor_final/365);
echo 'Ano '.$ano['0'];


echo '<hr>';
$mes = '0.'.substr($ano['1'],0,2);
$mes = $mes*12;
$mes = explode('.',$mes);
echo 'Mês '.$mes['0'];
echo '<hr>';

$data = '0.'.$mes['1'];
$data = explode('.',$data*30);
echo 'Dia '.$data['0'];

No caso deu que a data é 02/07/1924, lá em cima você disse que o correto é 29/07/1924, 6 dias de diferença eu sei que é por causa dos anos bissextos, mas os outros devem ser por causa dos arredondamentos, enfim, como não dá pra usar as funções de data nativas do PHP, não acredito que vá conseguir precisão nisso..

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...