Diferença entre datas
Publicado por DAVISON MARCEL PASQUALINI (última atualização em 14/01/2010)
[ Hits: 18.102 ]
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 --
Unificando arquivos de bloqueio e liberação no squid
Testa a conexão com a internet e se não tem reinicia o pc.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Assisti Avatar 3: Fogo e Cinzas (3)
Conky, alerta de temperatura alta (8)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (42)









