Desarrollo de Páginas Web, Aplicaciones Informáticas a medida, Posicionamiento Web en Internet (SEO), Accesibilidad web, Usabilidad

Imagen de la cabecera de www.webprogramacion.com
Inicio     Qué es webprogramacion.com     Mi currículum     Contacta conmigo    

Servicios

  • ¿Quieres aumentar el número de visitas de tu página web?
  • ¿Necesitas formación sobre algún tema tratado en webprogramacion.com?
  • ¿Quieres que imparta algún curso sobre algún tema tratado en la web?
  • ¿Quieres que revise la accesibilidad web de tu página?
  • ¿Buscas una aplicación a medida para tu empresa?
  • ¿Necesitas colaboración en tu proyecto?
  • Pide presupuesto sin compromiso
Escríbeme a través de la siguiente página y me pondré en contacto contigo.
webprogramacion.com > Programacion > PASCAL > Función para calcular los días que hay entre dos fechas

Función para calcular los días que hay entre dos fechas (Pascal)

La siguiente funcion hace uso de la funcion ano_bisiesto. Cuenta los dias entre dos fechas que son pasadas como parámetros.
Las fechas deben ser de tipo string y con el formato xx:yy:zzzz donde xx es el dia; yy el mes y zzzz el año.
Importante: la fecha_p debe ser mayor que la fecha_d

FUNCTION CUENTA_DIAS(fecha_p, fecha_d : STRING[10]):LONGINT;

VAR
contador : LONGINT;
cad1, cad2, cad3 : STRING;
ano_p, mes_p, dia_p, ano_d, mes_d, dia_d, codigo : INTEGER;
                  
BEGIN
cad1:=COPY(fecha_p, 1, 2); VAL(cad1, dia_p, codigo);//paso dias a numero
cad2:=COPY(fecha_p, 4, 2); VAL(cad2, mes_p, codigo);//paso mes a numero
cad3:=COPY(fecha_p, 7, 4); VAL(cad3, ano_p, codigo);//idem para el año

cad1:=COPY(fecha_d, 1, 2); VAL(cad1, dia_d, codigo);//idem para fecha_d
cad2:=COPY(fecha_d, 4, 2); VAL(cad2, mes_d, codigo);
cad3:=COPY(fecha_d, 7, 4); VAL(cad3, ano_d, codigo);
contador:=0;

WHILE (ano_d <> ano_p) OR (mes_d <> mes_p) OR (dia_d <> dia_p) DO
BEGIN
WHILE (mes_d <> mes_p) OR (dia_d <> dia_p) DO
BEGIN
DEC(dia_d); INC(contador); //para que entre en el siguiente bucle
    WHILE (dia_d <> dia_p) DO
BEGIN
IF dia_d <> 0 THEN BEGIN DEC(dia_d); INC(contador); END;
IF dia_d = 0 THEN BREAK;
END;
   
    IF dia_d = 0 THEN
    BEGIN
    CASE mes_d OF
    1    : BEGIN mes_d:=12; dia_d:=31; DEC(ano_d); END;
    3    : BEGIN mes_d:=2;
       IF ANO_BISIESTO(ano_d) = TRUE THEN dia_d:=29
       ELSE dia_d:=28;
       END;
    5    : BEGIN mes_d:=4; dia_d:=30; END;
    7    : BEGIN mes_d:=6; dia_d:=30; END;
    10 : BEGIN mes_d:=9; dia_d:=30; END;
    12 : BEGIN mes_d:=11; dia_d:=30; END
       ELSE
       BEGIN
       DEC(mes_d); dia_d:=31;
       END;
    END; {case}
    END; {if}
END; {while mes}
{cuando llegue aqui coincide mes y dia}
{ahora sumamos 365 o 366 segun corresponda}
WHILE (ano_d <> ano_p) DO
BEGIN
    IF ANO_BISIESTO(ano_d - 1) = TRUE THEN contador:=contador + 366
    ELSE contador:=contador + 365;
    DEC(ano_d);
END;
END; {while ano}
CUENTA_DIAS:=contador;

END; { FIN CUENTA_DIAS }

Autor del artículo

José Luis Álvarez

Fecha del artículo

25/12/2007

Etiquetas

fecha

Compartir

  • www.webprogramacion.com
  • informatica[at]webprogramacion.com
  • Formación
  • Accesibilidad
  • Aplicaciones a medida
  • Presencia en Internet
  • Salamanca

Valid XHTML 1.0 Transitional  ¡CSS Válido!  TAW.Test de accesibilidad web