Como trabalhar com calculos de datas inseridas pelo usuário? [RESOLVIDO]

1. Como trabalhar com calculos de datas inseridas pelo usuário? [RESOLVIDO]

Luiz Carlos
luizcarlos18rj

(usa Suse)

Enviado em 27/11/2013 - 11:49h

Oi galera...

Tenho uma grande dúvida em relação a calculos com datas sem ser pelo comando date

Tudo o que vi na net se baseia no comando date e suas opções

Ex.:

data atual:

$ date
Qua Nov 27 16:35:46 BRST 2013

------------------

amanhã:

$ date -d "+1 day"
Qui Nov 28 16:38:00 BRST 2012

------------------

ontem:
$ date -d "yesterday"
Ter Nov 26 16:38:17 BRST 2012

Legal, mas como afzer a mesma coisa sem ser com o date?

Eu queria que a data viesse pelo usuário ou digitando ou escolhendo uma no dialog --calendar
e que com essa data inserida pudesse fazer a mesma coisa.

Ex.

data inserida pelo usuário: "28/11/2013" ( via digitação ou via dialog --calendar)

dataescolhida= "28/11/2013"

dia posterior:

(dataescolhida + 1) = "29/11/2013"

dia anterior:

(dataescolhida - 1) = "27/11/2013"

Mas toda sintaxe que tento dá erro..

Alguém pode me ajudar?


  


2. Re: Como trabalhar com calculos de datas inseridas pelo usuário? [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 27/11/2013 - 12:15h

luizcarlos18rj escreveu:

Oi galera...

Tenho uma grande dúvida em relação a calculos com datas sem ser pelo comando date

Tudo o que vi na net se baseia no comando date e suas opções

Ex.:

data atual:

$ date
Qua Nov 27 16:35:46 BRST 2013

------------------

amanhã:

$ date -d "+1 day"
Qui Nov 28 16:38:00 BRST 2012

------------------

ontem:
$ date -d "yesterday"
Ter Nov 26 16:38:17 BRST 2012

Legal, mas como afzer a mesma coisa sem ser com o date?

Eu queria que a data viesse pelo usuário ou digitando ou escolhendo uma no dialog --calendar
e que com essa data inserida pudesse fazer a mesma coisa.

Ex.

data inserida pelo usuário: "28/11/2013" ( via digitação ou via dialog --calendar)

dataescolhida= "28/11/2013"

dia posterior:

(dataescolhida + 1) = "29/11/2013"

dia anterior:

(dataescolhida - 1) = "27/11/2013"

Mas toda sintaxe que tento dá erro..

Alguém pode me ajudar?


Se a variável for ficar assim:
daaescolhida="28/10/2013"

Faz assim:
dia=$(echo "$dataescolhida" | cut -d'"' -f2 | cut -d'/' -f1) 

Pra separar o dia (no lugar de f1 coloque f2 para o mês e f3 para ano). Acrescente os ifs necessários para que o script consiga pular o mês e o ano, e não aceite dias inválidos, tipo 31/02...


3. Re: Como trabalhar com calculos de datas inseridas pelo usuário? [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 27/11/2013 - 13:49h

É o que o @lcavalheiro disse, mas vai dar um trabalhinho..


4. Muito obrigado...

Luiz Carlos
luizcarlos18rj

(usa Suse)

Enviado em 27/11/2013 - 22:29h

deu certo.

e tb consegui uma segunda solução:

dia="`echo $diaescolhido | cut -c1-2`" # também separou o dia

mesano=`date +%m/%y` # criei a variável mesano para gurdar o resto da data Ex. __11/2013

let posterior="$dia + $x" # soma +1 ao $dia

let anterior="$dia - $x" # subtrai -1 ao $dia

amanha=$posterior/$mesano # Junta a soma + o resto da data Ex. hoje=28/11/2013 --> amanhã= (28+1) --> __/11/2013 --> 29/11/2013

ontem=$anterior/$mesano # Junta a subtração + o resto da data Ex. hoje=28/11/2013 --> ontem= (28-1) --> __/11/2013 --> 27/11/2013

echo $diaescolhido #~$: 28/11/2013

echo $dia #~$: 28

echo $mesano #~$: /11/2013

echo $amanha #~$: 29/11/2013

echo $ontem #~$: 27/11/2013


Mesmo assim continuo com a dúvida:

Trabalhando dessa forma apenas manipulo o número do dia da data, mas não consigo fazer as manipulações do date usando as mesmas operações do comando "date" como calcular o dia seguinte a partir dessa data, o dia anterior, etc mas não usando o "date" que calcula tudo baseado na data atual, mas sim numa data aleatória inserida no sistema.

Ex.

data inserida pelo usuário: 28/11/2013 ( via digitação ou via dialog --calendar)

echo $dataescolhida
~$: 28/11/2013

------------------

dia posterior:

posterior= (dataescolhida + 1) ou (dataescolhida -d "+1day") * Como se "$dataescolhida" fosse o "date".
echo posteior
~$: 29/11/2013

--------------

dia anterior:

anterior= (dataescolhida - 1) ou (dataescolhida -d "yesterday") * Como se "$dataescolhida" fosse o "date".
echo anterior
~$: 27/11/2013

Isso é possível?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts