Portál AbcLinuxu, 12. května 2025 05:06

Dotaz: date v proměnné

1.2.2010 21:36 jura
date v proměnné
Přečteno: 503×
Odpovědět | Admin
Dobrý den,

prosím o asi "triviální" radu jak pracovat s datumem v proměnné. Potřebuji uložit datum a čas.

datumcas=`date --date="2010-01-01 00:00:00" "+%Y-%m-%d %H:%M:%S"`

a potom přičíst 30 minut

datumcas= date --date="$datumcas +30 minute" +"%Y-%m-%d %H:%M:%S"

Bohužel mi nejde přičíst k datumcas 30 minut. Prosím poraďte.

Děkuji

Jura D.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.2.2010 22:09 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: date v proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zdravim, velmi jednoduche a napadite :)

 

pato@debian:~$ date --date="2010-01-01 00:00:00" 
Fri Jan  1 00:00:00 GMT 2010
pato@debian:~$ date --date="2010-01-01 00:00:00 30 minutes" 
Fri Jan  1 00:30:00 GMT 2010
pato@debian:~$ date --date="2010-01-01 00:00:00 30 minutes 1 hour" 
Fri Jan  1 01:30:00 GMT 2010
pato@debian:~$ date --date="2010-01-01 00:00:00 30 minutes 1 hour 1 day 23 seconds " 
Sat Jan  2 01:30:23 GMT 2010

inak potom man date alebo staci aj date --help . Neni zac. :)
1.2.2010 22:24 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: date v proměnné
Tu poslednu vetu si odmysli, nechcem kritizovat, sam sa nechovam mnohokrat tak a k tom ten tvoj zapis znaci ze si minimalne help videl, len si to na prvy raz nepochopil. Dalsie priklady:
pato@debian:~$ date --date="2010-01-01 00:00:00" 
Fri Jan  1 00:00:00 GMT 2010
pato@debian:~$ date --date="2010-01-01 00:00:00 1 week ago" 
Fri Dec 25 00:00:00 GMT 2009
pato@debian:~$ date --date="2010-01-01 00:00:00 1 week ago 1 hour ago" 
Thu Dec 24 23:00:00 GMT 2009
pato@debian:~$ date --date="2010-01-01 00:00:00 next" 
date: invalid date `2010-01-01 00:00:00 next'
pato@debian:~$ date --date="2010-01-01 00:00:00 5 hours next" 
date: invalid date `2010-01-01 00:00:00 5 hours next'
pato@debian:~$ date --date="2010-01-01 00:00:00 yesterday" 
Thu Dec 31 00:00:00 GMT 2009
pato@debian:~$ date --date="2010-01-01 00:00:00 tomorrow" 
Sat Jan  2 00:00:00 GMT 2010
Samozrejme pre --date="$VARIABLE" moze byt aj premenna, trebars zo suboru citat
for i in `cat timestamps.txt`
do
      date --date="$i 30 minutes"
done
Keby si potreboval upravit nejaku mnozinu datumov atd atd. :)
1.2.2010 22:35 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: date v proměnné
A to next nechapem ani ja, ako si mozes vsimnut :D A ten skript, kedze cita odniekial a my chceme upravit, tak to treba aj niekam zapisat. Takze takto by to malo byt:

for i in `cat timestamps.txt`
do
      date --date="$i 30 minutes" >> new_timestamps.txt 
done
Mrzi ma treti prispevok za sebou. Nabuduce to bude lepsie. :)
Fuky avatar 2.2.2010 00:31 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: date v proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
Myslím, že to funguje dle očekávání:
$ datumcas=`date --date="2010-01-01 00:00:00" "+%Y-%m-%d %H:%M:%S"` && echo $datumcas
2010-01-01 00:00:00
$ datumcas= date --date="$datumcas 30 minute" +"%Y-%m-%d %H:%M:%S"
2010-01-01 00:30:00

Jen místo "+30 minute" zadávej "30 minute".

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
2.2.2010 08:47 jura
Rozbalit Rozbalit vše Re: date v proměnné
Funguje to, ale když chci vypsat proměnou datumcas tak to vypíše původní datumcas bez přičtení 30 minut. Překvapivě mi přikaz

datumcas= date --date="$datumcas 30 minute" +"%Y-%m-%d

vypisuje datumcas, ale já chci jej dát do proměnné datumcas a potom si jej vypsat zvlášť echo $datumcas nebo vložit do sedu (to umím).

Děkuji

J.D.

2.2.2010 09:18 Chulda | skóre: 20
Rozbalit Rozbalit vše Re: date v proměnné
V druhem radku z tech 2 ukazek chybeji zpetne apostrofy, takze namisto vlozeni vystupu do promenne se vysledek zobrazi a v promene zustava hodnota z 1. radku ukazky. datumcas=`date --date="$datumcas 30 minute" +"%Y-%m-%d %H:%M:%S"`; echo $datumcas
2.2.2010 09:33 jura
Rozbalit Rozbalit vše Re: date v proměnné
To jsem zkoušel (zpětné apostrofy), ale hlásí to: příkaz nenalezen

J.D.
2.2.2010 11:37 l4m4
Rozbalit Rozbalit vše Re: date v proměnné
V tom případě jsi tam nejspíš nechal i tu mezeru navíc za =.

Zkrátka je zapotřebí dodržovat syntaxi...
Fuky avatar 2.2.2010 11:37 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: date v proměnné
Napiš sem přesně posloupnost příkazů, které jsi spouštěl, protože jak píše kolega výše, po přidání zpětných apostrofů nebo uzavření do $() to funguje přesně jak chceš.
2.2.2010 12:13 jura
Rozbalit Rozbalit vše Re: date v proměnné
Závorky pomohly a již to funguje tak jak chci.

děkuji za pomoc

Zdraví

Jura

2.2.2010 12:24 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: date v proměnné

Tohle je názorná ukázka, jak je v shellu občas důležité dávat pozor na mezery. Protože je za prvním rovnítkem mezera, znamená to, že ve skutečnosti používáte konstrukci

  var=value cmd -args

která znamená "spusť příkaz 'cmd -args' s proměnnou var nastavenou na hodnotu value. Používá se to např. takto:

  LC_TIME=ru_RU.UTF-8 date
  DISPLAY=:1 konsole &
  rpm -qa --queryformat '%{NAME}\n' | LC_ALL=C sort -u

Ve vašem případě jste spustil příkaz date s uvedenými parametry a prázdnou hodnotou proměnné datumcas.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.