terça-feira, 1 de outubro de 2013

Como identificar o último dia do mês

Estive procurando uma forma para saber qual o último dia do mês corrente, e encontrei uma referência que fazia uma tabela como esta apresentada abaixo.

Jan - 31 days
Feb - 28 days / 29 days (leap year)
Mar - 31 days
Apr - 30 days
May - 31 days
Jun - 30 days
Jul - 31 days
Aug - 31 days
Sep - 30 days
Oct - 31 days
Nov - 30 days
Dec - 31 days

Para isto foi utilizado o seguinte código bash:

for m in {1..12}; do
  date -d "$m/1 + 1 month - 1 day" "+%b - %d days"; 
done

Portanto, adaptando este código podemos fazer o seguinte

data_atual="20131001"
ultimodia=$(date -d "${data_atual} + 1 month - 1 day" +%Y%m%d )
echo ${ultimodia}
% 20131031

A principal diferença é que estamos passando o ano que pretendemos avaliar e com isto saber se é biossesto ou não.