Ir para conteúdo
Fórum Script Brasil

CARLOS B. FEITOZA FILHO

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que CARLOS B. FEITOZA FILHO postou

  1. OLÁ! Sou um daqueles que procurou muito na net alguma função para destrinchar um intervalo de datas em dias, meses e anos de forma precisa. Já tentei muita coisa, e até converti uma função em PHP, mas todas elas tinham falhas. A que menos falhou foi a que converti do PHP. Aqui você escreveu que desenvolveu uma função para realizar a tal tarefa, e além disso, até o momento da postagem, você disse que ela tem sido precisa. Você também tentou explicar como proceder, mas eu sinceramenten não entendi bem. Você também diz que a única forma de conseguir precisão é trabalhando separadamente com anos, meses e dias, fato que eu pude comprovar durante minhas pesquisas, mas que não tive capacidade para concluir. Em fim, poderia por gentileza enviar-me a função (pode ser em Delphi mesmo) de forma que eu possa estudá-la, usá-la e atualizá-la? Eu pretendo modificar para que ela retorne a informação com uma precisão de segundos ou mesmo milissegundos. Acredito que se eu conseguir entender o que você fez para anos, meses e dias, conseguirei desenvolver o restante da mesma. A função concluída eu te enviarei de volta, de forma que você também possa usufruir da mesma. Obrigado, antecipadamente. Fiz ± assim também:if Dti >= Dtf then Exit; // datas inválidas Anos := Anof - Anoi - 1; if (Mesi < Mesf) or ((Mesi = Mesf) and (Diai <= Diaf)) then Inc(Anos);O próximo passo é apurar os meses nas duas situações: if (Mesi <> Mesf) or ((Mesi = Mesf) and (Diai > Diaf)) Quando programava em Cobol, tive que fazer assim; tendo uma tabela de31 00 31 30 31 30 31 31 30 31 30 31 e atualizando o segundo ítem p/ 28 ou 29(vale uma dica p/ quem não souber que um ano é bissexto quando for divisível por 4 e se for divisível por 100 tem que ser divisível por 400); mas no Delphi otimizei um pouco porque você pode montar a data pelo EncodeDate e ir incrementando de 1 em 1 que automaticamente ela muda de mes(quando você adiciona um inteiro a um TDatetime, você está adicionando dias). Bom, ao menos p/ mim tive que escrever código p/ prever todas as variantes possíveis; não posso garantir que essa rotina esteja exata, mas pelas datas apuradas até agora, ela retornou resultados precisos.Se você tiver muita dificuldade em desenvolvê-la, me passe seu email que eu te mando; assim conto c/ sua contribuição p/ detectar algum bug p/ poder corrigí-lo.
×
×
  • Criar Novo...