Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Calculando a data da Páscoa em qualquer ano.
Colaboração: Braulio Junior
Data de Publicação: 12 de setembro de 2008
Com a definição da data fixa para início e término do Horário de Verão, de acordo com o Decreto 6.558 (https://www.planalto.gov.br/ccivil_03/_ato2007-2010/2008/decreto/d6558.htm), e com a dica do colega Ismael Carelli, que postou a fórmula na qual esse script é baseado, resolvi montar um script para o cálculo da Páscoa em qualquer ano. Para calcular o Carnaval, basta tirar 40 dias da data calculada.
Como parâmetro, passe sempre o ano a ser calculado.
#!/bin/sh a=$1 c=$(( $a/100 )) n=$(( $a - (19*($a/19)) )) k=$(( ($c - 17)/25 )) i=$(($c - ($c/4) - (($c-$k)/3) + (19*$n) + 15)) i=$(($i-(30*($i/30)) )) i=$(($i-(($i/28)*(1-($i/28))*(29/($i+1))*((21-$n)/11)))) j=$(( $a + ($a/4) + $i + 2 - $c + ($c/4))) j=$(( $j - (7*($j/7)))) l=$(($i-$j)) m=$((3 + (($l+40)/44))) d=$(($l + 28 - (31*($m/4)))) echo "Pascoa: $d/$m/$a"
Governo assina protocolo para o uso do padrão ODF nos documentos oficiais
Fonte: Notícias Linux
Os principais órgãos, bancos oficiais e empresas estatais de processamento de dados federais, assinaram no dia 27/08, um "Protocolo de Intenção para Adoção do Open Document Format - ODF", em contraponto à decisão da ISO que, recentemente, também aprovou o padrão OXML, da Microsoft, como formato de documento para interoperabilidade em nível mundial. A entidade rejeitou também um protesto feito pelo governo brasileiro contra essa decisão.
Fonte: http://www.broffice.org/governo_assina_protocolo_odf
Veja a relação completa dos artigos de Braulio Junior
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
16 Set 2008, 15:30
(...)
df=`date --date "$dc2" +%d`
# pega que dia será 01/02/YYYY
d1=`date --date "02/01/$a" +%w`
# Se for domingo, o cal deve pular 5 linhas, caso contrário, 6
if [ "$d1" = "0" ]; then
pl=5
else
pl=6
fi
td=`cal 2 $a|head -$pl|tail -1|cut -d" " -f1`
(...)
Pelo teste, os anos seriam:
2012, 2015, 2023, 2026, 2034 e 2037
16 Set 2008, 15:02
(...)
echo "Pascoa: $d/$m/$a"
dc1=`date --date "$m/$d/$a"`
# pascoa - 49 dias = domingo de carnaval
dc2=`date --date "$dc1 - 49 days ago"`
# pega o nr. dia do domingo de carnaval
df=`date --date "$dc2" +%d`
# usa o cal para pegar o terceiro domingo de fevereiro
td=`cal 2 $a|head -6|tail -1|cut -d" " -f1`
# se forem iguais, o final será mais 7 dias
if [ "$df" = "$td" ]; then
echo Fim: `date --date "$dc2 + 7 days"`
else
echo Fim: $dc2
fi
Também fiz um loop até 2038, onde é o limite da data do unix. Esses casos ocorrerão em 2009, 2012, 2023 e 2034.
Com isso, pode-se escrever regras específicas para o zic para essas datas.
15 Set 2008, 10:14
A Quaresma Católica Romana, inicia na Quarta-Feria de Cinzas e termina
no Domingo de Ramos (o Domingo anterior a Páscoa).
Assim para calcular quando será o término do horário de verão, é
preciso diminuir 49 dias do Domingo de Páscoa e verificar se esse dia
é o terceiro domingo do mês, se for, some 7 dias.
Para quem gosta de um feriado prolongado: Corpus Christi é 60 dias
após o Domingo de Páscoa (é uma quinta-feira) - também é uma data
Católica Romana.
Adicionei as seguintes linhas ao final para imprimir as datas dos feriados:
-----------------
echo "Carnaval: " `date --date="$a-$m-$d - 47 days" +%d/%m/%Y`
echo "Corpus Christi: " `date --date="$a-$m-$d + 60 days" +%d/%m/%Y`
-----------------
Seria legal contar a história desse algoritmo. Tem um pouco dele
aí na Unicamp
http://www.liv.ic.unicamp.br/~pavm/mc102_1s07/lab01/lab.html
P.S.2: Para quem preferir pode-se usar o "comando" ncal (No Linux e no
BSD devem ser o mesmo). Se tiver tempo mando o script.












