Diferença entre datas
Publicado por DAVISON MARCEL PASQUALINI (última atualização em 14/01/2010)
[ Hits: 18.098 ]
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 --
Converter Arquivo RMVB para AVI
Backup de vários servidores, diferenciado a rotina pela aplicação
DNS dinâmico noip2 para systemd
Instalação - Servidor de e-mail
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
Como fazer a conversão binária e aplicar as restrições no Linux
Como quebrar a senha de um servidor Linux Debian
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático









