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 <[EMAIL PROTECTED]> wrote:
> usa mktime http://br.php.net/mktime
>
> t+
>
>
> Em 24/07/06, Willia Luiz <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
> ---------------------------------------------------------------------
> 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


---------------------------------------------------------------------
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: [EMAIL PROTECTED]
---------------------------------------------------------------------
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

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a