shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Fazer subtração de Datas


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Fazer subtração de Datas
Date: Mon, 24 Jul 2006 17:30:13 -0300

postei um exemplo semanas atras com awk mas acharam muito complexo

uma dica é esta:

#!/bin/bash
[ "${2}" ] || { echo "usage: $0 <date1> <date2> -- in format
mm/dd/yyyy" ; exit 1 ; }
FIM=$(date "+%s" -d ${2})
INI=$(date "+%s" -d ${1})
DIFF=$(echo "sqrt((${FIM} - ${INI})^2)" | bc)
DAYS=$(echo "${DIFF} / (60 * 60 * 24)" | bc)
YEARS=$(echo "${DAYS} / 365" | bc)
echo "Diff between $1 and $2:
${DIFF:=0} Seconds, or
${DAYS:=0} Days, or
${YEARS:=0} Years"

Executando
$./diffdate.sh 02/02/2005 02/01/2004
Diff between 02/02/2005 and 02/01/2004:
31708800 Seconds, or
367 Days, or
1 Years

Ok, pode não ser o que vc deseja mas a ideia é - converte ambas as
datas para segundos desde uma certa data (1 de janeiro de 1970 nesse
caso) com o date "+%s" e subtrai os valores. elevei ao quadrado e
tirei a raiz pra ficar positivo, no bc.

Vc pode fazer ai um algoritmo do tipo

DIFF / 31536000 = numero de anos
DIFF % 31536000 = resto ( que podem ser meses, dias, horas....)

e montar algo como "entre X e Y tem A Anos, B dias e C segundo"... é
bacana de fazer.

[]´s Tiago

On 7/24/06, Leonardo Gomes <address@hidden> wrote:
usa mktime http://br.php.net/mktime

t+


Em 24/07/06, Willia Luiz <address@hidden> escreveu:
>
>  Gostaria de saber como devo fazer no meu script a subtração entre datas
> por exemplo, passo dois parametros um será a data atual e o outro parametro
> uma outra data e o meu script deverá retornar a diferença de dias entre uma
> data e a outra, mais eu não estou sabendo como fazer.
>
>
> Muito Obrigado pela ajuda.
>
>
> ---------------------------------
> Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular.
> Registre seu aparelho agora!
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>


[As partes desta mensagem que não continham texto foram removidas]



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil


Links do Yahoo! Grupos











--
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer


reply via email to

[Prev in Thread] Current Thread [Next in Thread]