Portál AbcLinuxu, 7. prosince 2025 17:48
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 <-->-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.