Como calcular anos, meses e dias entre duas datas

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 130444
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sumário
O programa neste artigo mostra como calcular a combinação de dias, meses e anos entre duas datas (data de início e data final) passadas como parâmetros de data por exemplo.

NOTA: A data de início tem de ser uma data anterior à data de fim.
Mais Informação
Para executar o programa, guarde o seguinte código como BTWNDATE.PRG. Em seguida, emita o seguinte comando onde Datadeinício e datadefim são valores de data:
DO BTWNDATE.PRG WITH startdate, enddate				
por exemplo:
DO BTWNDATE WITH {01/05/93},{01/05/95}				

Exemplo de código

   *   * BTWNDATE.PRG   *   PARAMETERS startdate, enddate   IF startdate > enddate        WAIT WINDOW "Start date must " + CHR(13) ;        + "be earlier than End date"        RETURN   ENDIF   IF PARAMETERS() <> 2        WAIT WINDOW "Not Correct Number of Parameters"        RETURN   ENDIF   PRIVATE  precmpdate, vyears, vmonths, vdays   precmpdate={}   vyears=0   vmonths=0   vdays=0      * Calculate:   *     endofmonth is the last day of month prior to month of enddate   *      endofmonth = CTOD(ALLTRIM(STR(MONTH(enddate))) + '/' + "01" + '/' + ;   ALLTRIM(STR(YEAR(enddate)))) - 1   *   IF MONTH(startdate) <= MONTH(enddate)        vyears = YEAR(enddate) - YEAR(startdate)        IF DAY(startdate) <= DAY(enddate)             vmonths = MONTH(enddate) - MONTH(startdate)             vdays = DAY(enddate) - DAY(startdate)        ELSE             IF MONTH(startdate) = MONTH(enddate)                  vyears = vyears - 1             ENDIF             vmonths = MOD(MONTH(enddate) - MONTH(startdate) - 1 + 12, 12)             vdays = endofmonth - precmpdate + DAY(enddate)        ENDIF   ELSE        vyears = YEAR(enddate) - YEAR(startdate) - 1        IF DAY(startdate) > DAY(enddate)             vmonths = MONTH(enddate) - MONTH(startdate) + 12 - 1             vdays = endofmonth - precmpdate + DAY(enddate)        ELSE             vmonths = MONTH(enddate) - MONTH(startdate) + 12             vdays = DAY(enddate) - DAY(startdate)        ENDIF   ENDIF   CLEAR   WAIT WINDOW  CHR(13) + ;             '  Years: '  + STR(vyears) + CHR(13) + ;             ' Months: ' + STR(vmonths) + CHR(13) + ;             '   Days: ' + STR(vdays) + CHR(13) + ;             CHR(13) + ;             ' Between ' + DTOC(startdate) + CHR(13) +;             '     and ' + DTOC(enddate)   RETURN				

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 130444 - Última Revisão: 12/04/2015 11:23:36 - Revisão: 2.3

Microsoft Visual FoxPro 3.0 Standard Edition, Microsoft Visual FoxPro 6.0 Professional Edition, Microsoft FoxPro 2.5b, Microsoft FoxPro 2.5a, Microsoft FoxPro 2.5b, Microsoft FoxPro 2.6 Standard Edition, Microsoft FoxPro 2.6a Standard Edition, Microsoft FoxPro 2.5b for MS-DOS, Microsoft FoxPro 2.5a, Microsoft FoxPro 2.5b for MS-DOS, Microsoft FoxPro 2.6 para MS-DOS, Microsoft FoxPro 2.6a Standard Edition

  • kbnosurvey kbarchive kbmt kbhowto KB130444 KbMtpt
Comentários