JuanCri.com

lunes 13 de febrero, 2012 a las 19:01

Como respuesta a este hilo en la lista Linux de la USM, envié el siguiente script para calcular el primer y último día hábil del mes y creí interesante compartirlo. Por supuesto, se puede opimizar aún -y no toma en cuenta los feriados-, pero puede ser un buen comienzo.

DOW = Day of week (día de la semana)
DOM = Day of month (día del mes)
LDOM = Last day of month (último día del mes)
FWDOM = First weekday of month (primer día hábil del mes)
LWDOM = Last weekday of month (último día hábil del mes)

#!/bin/bash
DOW=`date +%u`
DOM=`date +%d`
MONTH=`date +%m`
YEAR=`date +%Y`
LDOM=`cal $MONTH $YEAR | egrep -v '[A-Za-z]'|wc -w`
FWDOM=1
ADDFIRST=$(( ($DOM + 7 - $DOW) % 7 ))
if [ $ADDFIRST = 1 ]; then
    FWDOM=2
fi
if [ $ADDFIRST = 2 ]; then
    FWDOM=3
fi
LWDOM=$(( $LDOM ))
REMLAST=$(( (($LDOM - $ADDFIRST - 1) % 7) - 4 ))
if [ $REMLAST = 1 ]; then
LWDOM=$(( $LDOM - 1 ))
fi
if [ $REMLAST = 2 ]; then
    LWDOM=$(( $LDOM - 2 ))
fi
echo "DOW $DOW"
echo "DOM $DOM"
echo "LDOM $LDOM"
echo "FWDOM $FWDOM"
echo "LWDOM $LWDOM"

 

 

Creative Commons License
Blog JuanCri.com por Juan Cristóbal Olivares licenciado bajo la Creative Commons Attribution 2.0 Chile License.
Mono PostgreSQL

JuanCri.com