Pregunta: | 38601 - CALCULOS CON FECHAS EN CLIPPER |
Autor: | CESAR DIAZ LOPEZ |
NECESITO CALCULAR LAPSOS DE DIAS EN CLIPPER A PARTIR DE FECHAS DE INGRESO Y SALIDA SIN OMITIR LOS DIAS FERIADOS Y FIN DE SEMANA POR FAVOR URGENTE NECESITO AYUDA
DE ATEMANO MUCHAS GRACIAS |
Respuesta: | Jose Luis C. M. C. M. |
(En los ejemplos que expongo omito pasos obvios como declarar variables, y cosas así).
Tu pregunta dice "sin omitir dias feriados y fines de semana". Si esto es así, entonces simplemente resta la fecha final de la inicial y te dá la diferencia en días entre ambas: dFInic := ctod( "01/01/2002" ) // 1 de enero del 2002 dFFin := ctod( "08/01/2002" ) // 8 de enero del 2002 dResul := dFFin - dFInic (el valor de dResul sería 7) Pero si lo que necesitas es "omitir" los dias feriados y fines de semana, el asunto es más complejo. Una forma sencilla sería hacerlo por medio de un ciclo, que recorra desde la fecha inicial hasta la fecha final, y que compare los fines de semana y días feriados): nDiferencia := 0 dFecha := dFInic // Estas variables contienen la fecha inicial. for nCic := ( dFFin -dFIni ) + 1 // Según los días de diferencia. dFecha += nCic // Hacemos que la fecha "se recorra" if dow( dFecha ) <> 1 .and. dow( dFecha ) <> 7 // que omita Domingos y Sábados (7). nDiferencia ++ // Sumamos un día a la diferencia. endif next Este ejemplo no cuenta los Domingos (día 1 )y Sábados (7), Para los días feriados tendrías que guardar en una lista estos días y comparar la fecha actual (dFecha) para ver si es alguna de ellas. Si tienes alguna duda, escríbeme un mensaje. |