Cómo calcular años, meses y días entre dos fechas

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 130444
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Resumen
El sistema en este artículo muestra en ejemplo de cómo calcular la combinación de días, meses y años entre dos fechas (fecha inicial y final) pasadas como parámetros de fecha.

Nota: La fecha inicial debe ser una fecha anterior a la fecha final.
Más información
Para ejecutar el programa, guarde el código siguiente como BTWNDATE.PRG. A continuación, emita el comando siguiente donde startdate y enddate son valores de fecha:
DO BTWNDATE.PRG WITH startdate, enddate				
por ejemplo:
DO BTWNDATE WITH {01/05/93},{01/05/95}				

Ejemplo 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				

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 130444 - Última revisión: 12/04/2015 11:23:32 - Revisión: 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 KbMtes
Comentarios