Diferença entre datas
Publicado por DAVISON MARCEL PASQUALINI (última atualização em 14/01/2010)
[ Hits: 18.139 ]
Download varia_data2.sh (versão 2)
O script a seguir calcula a diferença entre datas desde 1970. O uso é simples, basta chamar o script passando primeiro a data menor e depois a maior. Ex.:
$ sh varia_data 12/02/2000 15/04/2015
resultado: 5541 dias
É grande mas é rápido, não se assuste.
Versão 2 - Enviado por DAVISON MARCEL PASQUALINI em 11/01/2010
Changelog: Uma alteração bem simples, mas que acaba com o limite de tempo e que também torna o script muito mais rápido.
# ROTINA DE VARIACAO DE DATA
# Codigo pertence a Comunidade
# VOL (Viva o Linux)
#-------------------------------------------------------
# Primeira versao: Davison Pasqualini
# 29/12/2009 fdmarp
#-------------------------------------------------------
#-Parametros-----------------------------------
data_inicial=$1
data_final=$2
dia1=`echo $data_inicial | cut -d"/" -f1`
mes1=`echo $data_inicial | cut -d"/" -f2`
ano1=`echo $data_inicial | cut -d"/" -f3`
dia2=`echo $data_final | cut -d"/" -f1`
mes2=`echo $data_final | cut -d"/" -f2`
ano2=`echo $data_final | cut -d"/" -f3`
#-Calculo--------------------------------------
verifica_bissexto ()
{
verif1=`echo scale=3\;$ano_val/4 |bc | cut -d. -f2`
if [ "$verif1" -eq 0 ]; then
verifica_bissexto_p2
else
bissexto="0"
fi
}
verifica_bissexto_p2 ()
{
verif2=`echo scale=3\;$ano_val/100 |bc | cut -d. -f2`
if [ "$verif2" -eq 0 ]; then
verifica_bissexto_p3
else
bissexto="1"
fi
}
verifica_bissexto_p3 ()
{
verif3=`echo scale=3\;$ano_val/400 |bc | cut -d. -f2`
if [ "$verif3" -eq 0 ]; then
bissexto="1"
else
bissexto="0"
fi
}
verifica_bissexto_p4 ()
{
ano_val=`expr $ano_fim + 1`
verifica_bissexto
if [ "$bissexto" -eq 0 ]; then
dias_count=`expr $dias_count + 28`
else
dias_count=`expr $dias_count + 29`
fi
}
varia_ano ()
{
dias_count=0
ano_val=1970
while [ "$ano_val" -le "$ano_fim" ];
do
verifica_bissexto
if [ "$bissexto" -eq 0 ]; then
dias_count=`expr $dias_count + 365`
else
dias_count=`expr $dias_count + 366`
fi
ano_val=`expr $ano_val + 1`
done
varia_mes
}
varia_mes ()
{
mes_val=1
while [ "$mes_val" -le "$mes_fim" ];
do
case "$mes_val" in
"1" | "3" | "5" | "7" | "8" | "10" | "12" )
dias_count=`expr $dias_count + 31`
;;
"01" | "03" | "05" | "07" | "08" )
dias_count=`expr $dias_count + 31`
;;
"4" | "04" | "6" | "06" | "9" | "09" | "11" )
dias_count=`expr $dias_count + 30`
;;
"2" | "02" )
verifica_bissexto_p4
;;
esac
mes_val=`expr $mes_val + 1`
done
varia_dia
}
varia_dia ()
{
dias_count=`expr $dia_fim + $dias_count`
}
dia_fim=`expr $dia1 - 1`
ano_fim=`expr $ano1 - 1`
mes_fim=`expr $mes1 - 1`
varia_ano
Varia_dias_data1=$dias_count
dia_fim=`expr $dia2 - 1`
ano_fim=`expr $ano2 - 1`
mes_fim=`expr $mes2 - 1`
varia_ano
Varia_dias_data2=$dias_count
resultado=`expr $Varia_dias_data2 - $Varia_dias_data1`
echo "resultado: $resultado dias"
#-------------------------------------- FIM --
Script que sincroniza a mensagem de cópia de pendrive com o processo real
Recriando /dev/null facilmente
Configurando a raiz do seu servidor apache facilmente.
package maker para o slackware
Sincronização entre Servidores de Impressão
KDE Plasma - porque pode ser a melhor opção de interface gráfica
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
Instalar Linux em notebook Sony Vaio VPCEG13EB (10)
Vou destruir sua infância:) (6)
Quando vocês pararam de testar distros? (24)









