Portál AbcLinuxu, 12. května 2025 10:11
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 doneVystup je nasledovny:
"1117217311" --> 1233724323 <--> 1233741469 <-->-17146 <-->-4 "1117215911" --> 1233724340 <--> 1233747884 <-->-23544 <-->-6 "1117218811" --> 1233724034 <--> 1233746210 <-->-22176 <-->-6Lenze 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.
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
date -d '00:00:00 17146 seconds' +%T
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
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.