Portál AbcLinuxu, 12. května 2025 10:11

Dotaz: Prevod zo sec do HH:MM:SS

15.4.2008 15:39 shepi | skóre: 6
Prevod zo sec do HH:MM:SS
Přečteno: 366×
Odpovědět | Admin
Zdravim vospolok.

Napisal sim si script ktory prevadza datum na sec a nasledne ich odcitam.

Ukazka z neho :
funk2()
{
for veta in $(funk1); do
#echo $veta
row=$(echo $veta | cut -d";" -f1 )
dat_1a=$(echo $veta | cut -d";" -f2 )
dat_1b=$(echo $veta | cut -d";" -f3 )
dat_1c=$(date -d "$dat_1a $dat_1b" +%s)

dat_2a=$(echo $veta | cut -d";" -f4 )
dat_2b=$(echo $veta | cut -d";" -f5 )
dat_2c=$(date -d "$dat_2a $dat_2b" +%s)

dat_3a=$(($dat_1c - $dat_2c))
dat_3b=$((($dat_1c - $dat_2c)/3600))

echo "$row --> $dat_1c <--> $dat_2c <-->$dat_3a <-->$dat_3b"
sleep 2
done

Vystup je nasledovny:
"1117217311" --> 1233724323 <--> 1233741469 <-->-17146 <-->-4
"1117215911" --> 1233724340 <--> 1233747884 <-->-23544 <-->-6
"1117218811" --> 1233724034 <--> 1233746210 <-->-22176 <-->-6
Lenze teraz potrebujem opacne previest tie sec na HH:MM:SS. Skusal som to delit ale vychadzaju len cele cisla. Existuje aj opacny prevod cez prikaz date ?

Skusil som nasledovne:

date -d '17146' +%T

ale vysle z toho blbost dik za typ.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.4.2008 15:50 12345 | skóre: 41 | blog:
Rozbalit Rozbalit vše Re: Prevod zo sec do HH:MM:SS
Odpovědět | | Sbalit | Link | Blokovat | Admin
Quick'n'Dirty třeba takto:
secs2date() {
	secs=$1
	hh=$((secs / 3600))
	secs=$((secs % 3600))
	mm=$((secs / 60))
	ss=$((secs % 60))
	echo $hh:$mm:$ss
}
Například:
$ secs2date 17146
4:45:46
15.4.2008 16:09 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Prevod zo sec do HH:MM:SS
minúty, sekundy ok, pre hodiny už uvažovať o vplyve časovej zóny (letného času)
15.4.2008 16:13 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Prevod zo sec do HH:MM:SS
aha ... to je pre interval. Tak tam to vplyv nemá.
15.4.2008 16:30 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Prevod zo sec do HH:MM:SS
Odpovědět | | Sbalit | Link | Blokovat | Admin
date -d '00:00:00 17146 seconds' +%T
16.4.2008 08:05 shepi | skóre: 6
Rozbalit Rozbalit vše Riesenie scitanie odcitanie datumov + spatny prevod
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dakujem vsetkym za typy a prikladam jednoduchy priklad

Pre aritm.aperacie s datumom ich treba previest na sekundy "t.j pocet sekund ubehnutych od 01.01.1970 00:00:00". Na toto sluzi sikovna vecicka date -d '2008-04-14 08:05:00' +%s date -d '2008-04-14 07:05:00' +%s vystup je nasledovny:

1208156700 1208153100 Tieto hodnoty odcitame napr :

$((1208156700 - 1208153100))

Vysledok je 3600 a ten mozme spatne prehodit na cas nasledovne

date -d '00:00:00 3600 seconds' +%T

Vysledok je 01:00:00. To je vsetko . Dufam ze to pomoze ludkom ktory maju radi bash: Pomohli:

happy barney honza-S

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.