Diferença entre datas

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
JAIR RANGEL
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 19 Jul 2005 16:01
Localização: RIO DE JANEIRO
Contato:

Diferença entre datas

Mensagem por JAIR RANGEL »

Olá, Pessoal !

Estou precisando obter a diferença entre duas Datas.
A diferença seria em meses.
Alguém tem uma dica ou uma função que retorne esta diferença:

Desde já, obrigado !!!!!!!!

HARBOUR+MINIGUI+BRMAKE+CDX EM BREVE: MYSQL.
MINIGUI + HARBOUR + BRMAKE + CDX
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: DIFERENÇA ENTRE DATAS

Mensagem por Maligno »

A diferença entre duas datas é feita pelo operador de subtração, como se fosse um número qualquer. O resultado será em dias. Para obter em meses, a coisa fica meio esquisita. Você poderia obter resultados do tipo 3,45 meses, por exemplo. Mas é só dividir o resultado por 30 (mês comercial). Mas fica esquisito.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: DIFERENÇA ENTRE DATAS

Mensagem por Toledo »

Jair, esta função retorna a diferença por extenso entre duas datas.

Código: Selecionar todos

Function DifDatas(dDataInicial,dDataFinal)
v_dia:=v_mes:=v_ano:=0
v_anof=YEAR(dDataFinal)
v_mesf=MONTH(dDataFinal)
v_diaf=DAY(dDataFinal)
v_anoi=YEAR(dDataInicial)
v_mesi=MONTH(dDataInicial)
v_diai=DAY(dDataInicial)
IF v_diaf < v_diai
  v_diaf+=30
  v_mesf-=1
ENDIF
v_dia=v_diaf - v_diai
IF v_mesf < v_mesi
  v_mesf+=12
  v_anof-=1
ENDIF
v_mes=v_mesf - v_mesi
v_ano=v_anof - v_anoi    
v_ret=''
IF v_ano>0
  v_ret=STRZERO(v_ano,2)+IF(v_ano=1,' ano',' anos')+IF(v_mes>0,IF(v_dia>0,',',' e '),IF(v_dia>0,' e ',''))
ENDIF
IF v_mes>0
  v_ret+=STRZERO(v_mes,2)+IF(v_mes=1,' mes ',' meses ')+IF(v_dia>0,'e ','')
ENDIF
IF v_dia>0
  v_ret+=STRZERO(v_dia,2)+IF(v_dia=1,' dia',' dias')
ENDIF
Return (v_ret)
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
JAIR RANGEL
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 19 Jul 2005 16:01
Localização: RIO DE JANEIRO
Contato:

Re: DIFERENÇA ENTRE DATAS

Mensagem por JAIR RANGEL »

Obrigado Maligno !
Obrigado Toledo !

Vou ver o que consigo com a Função DifDatas(Data1,Data2).

Abraço a todos......

HARBOUR+MINIGUI+BRMAKE+CDX -------- LOUCO PARA INICIAR MIGRAÇÃO P/MYSQL !
MINIGUI + HARBOUR + BRMAKE + CDX
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
Responder